Ejemplo n.º 1
0
int Destroy_Semaphore (int id)
{
    struct Semaphore *sem = NULL;

    sem = Get_Sem_By_Id(id);

    if (sem == NULL)
        return -1;

    Remove_From_Semaphore_List(&s_semList, sem);

    return 0;
}
Ejemplo n.º 2
0
void listTest()
{
    struct Semaphore sem1, sem2, sem3;
    sem1.id = 1;
    sem2.id = 2;
    sem3.id = 3;

    Dump_All_Semaphore_List();
    Add_To_Back_Of_Semaphore_List(&s_semList, &sem1);
    Add_To_Back_Of_Semaphore_List(&s_semList, &sem3);
    Add_To_Back_Of_Semaphore_List(&s_semList, &sem2);

    Dump_All_Semaphore_List();
    Remove_From_Semaphore_List(&s_semList, &sem1);
    Dump_All_Semaphore_List();
}
Ejemplo n.º 3
0
int Destroy_Semaphore(int sid)
{
	struct Semaphore* sema = (&s_semaphoreList)->head;

	//find sem by sid
	while (sema != 0)
	{
		if (sema->sid == sid)
		{
			Remove_From_Semaphore_List(&s_semaphoreList, sema);
			Free(sema);
			return 0;
		}
		sema = Get_Next_In_Semaphore_List(sema);
	}
	
	return -1;
}