static void hobbit(void *p, unsigned long which) { (void)p; int mygen = mem_join(fotr.hobbits, 4, nameof_hobbitses(which)); mem_wait(&fotr.hobbits[0], mygen); leave(nameof_hobbitses(which)); V(done_sem); }
static void dwarf(void *p, unsigned long which) { (void)p; int mygen = mem_join(&fotr.dwarf, 1, nameof_khazad(which)); mem_wait(&fotr.dwarf, mygen); leave(nameof_khazad(which)); V(done_sem); }
static void elf(void *p, unsigned long which) { (void)p; int mygen = mem_join(&fotr.elf, 1, nameof_eldar(which)); mem_wait(&fotr.elf, mygen); leave(nameof_eldar(which)); V(done_sem); }
static void man(void *p, unsigned long which) { (void)p; int mygen = mem_join(fotr.men, 2, nameof_menfolk(which)); mem_wait(&fotr.men[0], mygen); leave(nameof_menfolk(which)); V(done_sem); }
/// Allocate a memory block from a memory pool and set memory block to zero. /// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. /// \return address of the allocated memory block or NULL in case of no memory available. /// \note MUST REMAIN UNCHANGED: \b osPoolCAlloc shall be consistent in every CMSIS-RTOS. void *osPoolCAlloc (osPoolId pool_id) { void *mem; return (mem_wait(pool_id, &mem) == E_SUCCESS) ? mem : 0; }
/// Allocate a memory block from a memory pool. /// \param[in] pool_id memory pool ID obtain referenced with \ref osPoolCreate. /// \return address of the allocated memory block or NULL in case of no memory available. /// \note MUST REMAIN UNCHANGED: \b osPoolAlloc shall be consistent in every CMSIS-RTOS. void *osPoolAlloc (osPoolId pool_id) { void *block; return (mem_wait(pool_id, &block) == E_SUCCESS) ? block : 0; }