Does FreeRTOS allow creation of Queues, Mutexes, and Semaphores within Critical Regions?

mikestitt wrote on Monday, March 24, 2014:

The FAQ:

States: "I get stuck on the line that starts for( pxIterator = ( ListItem_t * ) &( pxList->xListEnd );

Likely causes include:
Calling an API function from within a critical section or when the RTOS scheduler is suspended."

Can this prohibition be clarified to limit calls to API functions which might run the scheduler within taskENTER_CRITICAL() regions? That is, allow API functions that don’t run the scheduler?

To provide easy to use contracts between modules, I’d like to use lazy instantiation of communication
mechanisms like this:

xQueueHandle getValidAppQueue(void)
    static xQueueHandle appStateQueueHandle = 0;
    if (!appStateQueueHandle) {
        appStateQueueHandle = xQueueCreate(1, sizeof( appStateQueueType));
    return appStateQueueHandle;

But the FAQ implies that by calling XQueueCreate within a critical region, I’m violating the FreeRTOS API.