added client
This commit is contained in:
parent
5b21f06e04
commit
9daf445702
|
@ -2,6 +2,7 @@
|
||||||
#define SEMAPHORE_H
|
#define SEMAPHORE_H
|
||||||
|
|
||||||
void semOp(int semid, short sem_num, short sem_op);
|
void semOp(int semid, short sem_num, short sem_op);
|
||||||
int getSemid();
|
int getSemid(key_t key, int size);
|
||||||
|
void resetServerSem(int semid);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -5,17 +5,20 @@
|
||||||
#include <server.h>
|
#include <server.h>
|
||||||
#include <structures.h>
|
#include <structures.h>
|
||||||
#include <custom_sem.h>
|
#include <custom_sem.h>
|
||||||
|
#include <custom_shm.h>
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
input_server_t input = check_input(argc, argv);
|
input_server_t input = check_input(argc, argv);
|
||||||
|
|
||||||
int shmBoardid = getShmid();
|
int shmBoardid = getShmid(input.rows, input.collums);
|
||||||
tile_t *board = shmServerAt(shmBoardid);
|
tile_t *board = shmServerAt(shmBoardid);
|
||||||
|
|
||||||
// si potrebbe mettere in server.c
|
// si potrebbe mettere in server.c
|
||||||
int semid = getSemid(ftok(KEYFILE, 'k'), 2);
|
int semid = getSemid(ftok(KEYFILE, 'k'), 2);
|
||||||
|
|
||||||
|
resetServerSem(semid);
|
||||||
|
|
||||||
semOp(semid, 0, 2); // aperura semaforo per connessione dei 2 client
|
semOp(semid, 0, 2); // aperura semaforo per connessione dei 2 client
|
||||||
semOp(semid, 0, 0); // aspetto che si connettano i 2 client
|
semOp(semid, 0, 0); // aspetto che si connettano i 2 client
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include <sys/sem.h>
|
#include <sys/sem.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#include <custom_sem.h>
|
#include <custom_sem.h>
|
||||||
#include <structures.h>
|
#include <structures.h>
|
||||||
#include <errExit.h>
|
#include <errExit.h>
|
||||||
|
@ -13,21 +14,21 @@ void semOp(int semid, short sem_num, short sem_op) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int getSemid(key_t key, int size){
|
int getSemid(key_t key, int size){
|
||||||
int semid = semget(key, size, S_IRUSR | S_IWUSR);
|
int semid = semget(key, size, S_IRUSR | S_IWUSR | IPC_CREAT);
|
||||||
if (semid == -1) {
|
if (semid == -1) {
|
||||||
errExit("semget", "getSemid");
|
errExit("semget", "getSemid");
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned short val[size];
|
return semid;
|
||||||
for (int i=0; i<size; i++) { // temporaneo
|
|
||||||
val[i] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mette i semafori a 0
|
||||||
|
void resetServerSem(int semid){
|
||||||
|
unsigned short val[2] = {0, 0};
|
||||||
union semun arg;
|
union semun arg;
|
||||||
arg.array = val;
|
arg.array = val;
|
||||||
|
|
||||||
if (semctl(semid, 0 , SETALL, arg) == -1) {
|
if (semctl(semid, 0 , SETALL, arg) == -1) {
|
||||||
errExit("semctl", "getSemid");
|
errExit("semctl", "getSemid");
|
||||||
}
|
}
|
||||||
|
|
||||||
return semid;
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue