/* * ======== SemProcessSupport_pend ======== */ Int SemProcessSupport_pend(SemProcessSupport_Handle sem, UInt timeout, Error_Block *eb) { UInt bios6_timeout; Semaphore_Handle bios6sem; Int status; bios6sem = SemProcessSupport_Instance_State_sem(sem); if (SemProcessSupport_FOREVER == timeout) { bios6_timeout = BIOS_WAIT_FOREVER; } else { bios6_timeout = timeout / Clock_tickPeriod; /* * Don't let nonzero timeout round to 0 - semantically very * different */ if (timeout && (!bios6_timeout)) { bios6_timeout = 1; } } status = Semaphore_pend(bios6sem, bios6_timeout); if (status == 1) { return (ISemaphore_PendStatus_SUCCESS); } else if (status == 0) { return (ISemaphore_PendStatus_TIMEOUT); } else { return (ISemaphore_PendStatus_ERROR); } }
/* * ======== SemProcessSupport_Instance_finalize ======== */ Void SemProcessSupport_Instance_finalize(SemProcessSupport_Handle sem) { Semaphore_Handle bios6sem; bios6sem = SemProcessSupport_Instance_State_sem(sem); Semaphore_destruct( Semaphore_struct(bios6sem)); }
/* * ======== SemProcessSupport_post ======== */ Bool SemProcessSupport_post(SemProcessSupport_Handle sem, Error_Block *eb) { Semaphore_Handle bios6sem; bios6sem = SemProcessSupport_Instance_State_sem(sem); Semaphore_post(bios6sem); return (TRUE); }
/* * ======== SemProcessSupport_Instance_init ======== */ Void SemProcessSupport_Instance_init(SemProcessSupport_Handle sem, Int count, Int key, const SemProcessSupport_Params* params) { Semaphore_Handle bios6sem; Semaphore_Params semParams; Semaphore_Params_init(&semParams); semParams.mode = (Semaphore_Mode)params->mode; bios6sem = SemProcessSupport_Instance_State_sem(sem); Semaphore_construct( Semaphore_struct(bios6sem), count, &semParams); }
/* * ======== SemProcessSupport_Instance_init ======== */ Void SemProcessSupport_Instance_init(SemProcessSupport_Handle sem, Int count, Int key, const SemProcessSupport_Params* params) { Semaphore_Handle bios6sem; Semaphore_Params semParams; Semaphore_Params_init(&semParams); if (params->mode == ISemaphore_Mode_COUNTING) { semParams.mode = Semaphore_Mode_COUNTING; } else { semParams.mode = Semaphore_Mode_BINARY; } bios6sem = SemProcessSupport_Instance_State_sem(sem); Semaphore_construct( Semaphore_struct(bios6sem), count, &semParams); }