implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
Hi Guys – A minor nit but I know you try hard to make all your code compile clean.
I get warnings about two implicit declarations (everything else compiles without warnings).
Details below.
Thanks as always,
Best Regards, Dave
~~~
Invoking: Cross ARM C Compiler
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 -O0 -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -Wall -Wextra -g3 -D”CPUMK64FN1M0VDC12″ -DUSBSTACKFREERTOS -DHSBBUILDWPA -I../source -I../CMSIS -I../GenerateduCsetup -I../board -I../drivers -I../freertos/Source/include -I../freertos/Source/portable/GCC/ARMCM4F -I../startup -I../utilities -I”E:/Cap/MFW2/MFW2firmware/USB/include” -I”E:/Cap/MFW2/MFW2firmware/USB/device/include” -I”E:/Cap/MFW2/MFW2firmware/USB/device/class” -I”E:/Cap/MFW2/MFW2firmware/USB/osa” -I”E:/Cap/MFW2/MFW2firmware/USB/device/class/cdc” -I”E:/Cap/MFW2/MFW2firmware/USB/device/source” -I”E:/Cap/MFW2/MFW2firmware/USB/device/source/khci” -std=gnu99 -Wno-unused-parameter -MMD -MP -MF”FreeRTOS/Source/portable/Common/mpuwrappers.d” -MT”FreeRTOS/Source/portable/Common/mpuwrappers.o” -c -o “FreeRTOS/Source/portable/Common/mpuwrappers.o” “../FreeRTOS/Source/portable/Common/mpuwrappers.c”
../FreeRTOS/Source/portable/Common/mpuwrappers.c: In function ‘MPUxTaskCreateRestricted’:
../FreeRTOS/Source/portable/Common/mpuwrappers.c:104:2: warning: implicit declaration of function ‘xTaskCreateRestricted’ [-Wimplicit-function-declaration]
xReturn = xTaskCreateRestricted( pxTaskDefinition, pxCreatedTask );
^
../FreeRTOS/Source/portable/Common/mpu_wrappers.c:105:2: warning: implicit declaration of function ‘vPortResetPrivilege’ [-Wimplicit-function-declaration]
vPortResetPrivilege( xRunningPrivileged );
^
~~~
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
Hi Dave – thanks for taking the time to report this.
I’ve just compared the head revision of mpuwrappers.c with the revision
from the FreeRTOS V9.0.0 release and it looks like this has already been
picked up as MPUxTaskCreateRestricted() is now only compiled if
configSUPPORTDYNAMICALLOCATION is set to 1.
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
Is the updated code available? I only find 9.0.0 on sourceforge (sorry if I’m looking in the wrong place)…
Thanks, Best Regards, Dave
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
Did you look in the SVN repository – also on SourceForge?
https://sourceforge.net/p/freertos/code/HEAD/tree/trunk/FreeRTOS/Source/portable/Common/mpu_wrappers.c
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
I am getting these same warnings, compiling freshly-downloaded FreeRTOS 10.0.0 with target GCC/ARM_CM4F. Shouldn’t these prototypes be declared in task.h?
Edit: looks like xTaskCreateRestricted does get declared in task.h, but only if portUSINGMPUWRAPPERS=1 is defined. Where is that macro supposed to be defined?
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
Is this also the case in FreeRTOS V10.0.1? If so, please describe how
to replicate the problem (e.g. which port are you using, what are
configSUPPORTDYNAMICALLOCATION and configSUPPORTSTATICALLOCATION set
to, and any other relevant configuration items).
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
I’m facing the same situation with these specs:
FreeRTOS 10.0.1, ATMega328 port
Compiler and flags: avr-gcc, -std=gnu11 -Wall, -Wpedantic
avr-gcc version: 4.9.2
FreeRTOSConfig flags:
~~~
#define configSUPPORTDYNAMICALLOCATION 1
#define configSUPPORTSTATICALLOCATION 1
~~~
The situation is the same even if configSUPPORTSTATICALLOCATION is set to 0.
An output’s excerpt:
~~~
/home/fjrg76/Documentos/arduino-1.8.5/hardware/tools/avr/bin/avr-gcc -MMD -c -mmcu=atmega328p -DFCPU=16000000L -DARDUINO=185 -DARDUINOARCHAVR -DPROG_TYPES_COMPAT -I/home/fjrg76/Documentos/arduino-1.8.5/hardware/arduino/avr/cores/arduino -I/home/fjrg76/Documentos/arduino-1.8.5/hardware/arduino/avr/variants/standard -I/home/fjrg76/Documentos/arduino-1.8.5/libraries/FreeRTOS/src -Wall -ffunction-sections -fdata-sections -Os -std=gnu11 -Wall -Wpedantic /home/fjrg76/Documentos/arduino-1.8.5/libraries/FreeRTOS/src/mpuwrappers.c -o build-uno/libs/FreeRTOS/src/mpu_wrappers.o
*/home/fjrg76/Documentos/arduino-1.8.5/libraries/FreeRTOS/src/mpuwrappers.c: In function ‘MPUxTaskCreateRestricted’:
/home/fjrg76/Documentos/arduino-1.8.5/libraries/FreeRTOS/src/mpuwrappers.c:64:3: warning: implicit declaration of function ‘xTaskCreateRestricted’ [-Wimplicit-function-declaration]
xReturn = xTaskCreateRestricted( pxTaskDefinition, pxCreatedTask );*
~~~
If you guys need more information please don’t hesitate. Greetings!
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
From the looks of it you are not using code provided by us, but from a
third party, so we can only provide general assistance and ideas as we
are not familiar with the code you are building (mpuwrappers.c).
These warnings are nothing to do with static or dynamic allocation, but
with whether or not you are using a FreeRTOS port that support memory
protection or not. I’m not aware of a port for the ATMega that has
memory protection, and in fact are not aware that any ATMega parts even
have memory protection unit – so I think you are just building the wrong
files for that target.
implicit declaration of function ‘xTaskCreateRestricted’, ‘vPortResetPrivilege’
I got it. It’s a compressed version of FreeRTOS, directly downloaded from sourceforge.net. I took only what it was needed it to make it work from the ATMega323 official port, and it works! Perhaps it’s important to mention that this port is using heap_3.c. Maybe you want to take a look the files that are been compiled, please see the attached pic.
As others have said, such situation isn’t critical, but I read that you like clean compilations.