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.