#include #include #include #include #include #include #include #include #include #include #include "printx.h" #include "ui.h" #include "nfc.h" #include "hvc.h" #include "heat.h" #include "pump.h" #define CMD_MAX 70 #define KEY 1100 #define SEM_NUMBER 2 #define SEM_INPUT 0 #define SEM_OUTPUT 1 int bus; bool busFree = true; bool busStop = false; int mySem; int get_sem(int i) { ushort semarr[30]; union semun { int val; struct semid_ds *buf; ushort *array; }arg; arg.array = semarr; semctl(mySem, i, GETALL, arg); return semarr[i]; } void show_sem(int i) { int val; val = get_sem(i); printf("semaphore[%d]=%d\n", i, val); } void create_sem(int N) { printx(DEBUG, BUS, "create %d semaphores\n", N); mySem = semget(KEY, N, 0666 | IPC_CREAT); if(mySem < 0) printx(ERROR, BUS, "Unable to create the semaphore\n"); } void init_sem(int N) { int j; int retval; union semun { int val; struct semid_ds *buf; ushort *array; }arg; arg.val = 1; for (j=0; j