/*
 *  ======== 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);
}
Beispiel #5
0
/*
 *  ======== 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);
}