Strange, I don’t see why the prototype for xPortStartScheduler() is not in portable code (i.e. “Source/port/XXX/portmacro.h”).
It seems to me the prototype for xPortStartScheduler() obviously needs to be just as portable as is the prototype for vPortTickInterrupt() which IS in "portmacro.h".
So we shouldn’t have to design this sort of nonsense:
portBASE_TYPE xPortStartScheduler( void )
/* xPortStartScheduler() does not start the scheduler directly because
the header file containing the xPortStartScheduler() prototype is part
of the common kernel code, and therefore cannot use the CODE_SEG pragma.
Instead it simply calls the locally defined xNearStartScheduler() -
which does use the CODE_SEG pragma. */