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);
}
Exemple #5
0
/// 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;
}
Exemple #6
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;
}