#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/sem.h>
#include<sys/shm.h>
void lock_init(int *lock1)
{
union semun
{
int val;
struct semid_ds *xx;
ushort **yy;
}arg;
int j;
j=semget(144,1,0666|IPC_CREAT);
*lock1=j;
arg.val=1;
semctl(*lock1,0,SETVAL,arg);
}
void locksem(int *lock1)
{
struct sembuf oprations;
oprations.sem_num=0;
oprations.sem_op=-1;
oprations.sem_flg=0;
semop(*lock1,&oprations,1);
}
void unlock(int *lock1)
{
struct sembuf oprations;
oprations.sem_num=0;
oprations.sem_op=1;
oprations.sem_flg=0;
semop(*lock1,&oprations,1);
}
/*void free_sem(int id)
{
if(semctl(*id,1,IPC_RMID)!=0)
error_exit("cleanup_sem","semctl");
}
*/