#define HEXMODE 0
#endif
-#define VERSION_NUMBER "2.03 20090813"
+#define VERSION_NUMBER "2.04 20090818"
static int hexMode = HEXMODE;
trb_debug = 0;
trb_lazy = 0;
+ trb_semlock = 1;
/* Parse Arguments */
while ((opt = getopt(argc, argv, "+hf:n:d:DlHV")) != -1) {
unsigned int trb_debug = 0;
unsigned int trb_lazy = 0;
unsigned int trb_dma = 0;
+unsigned int trb_semlock = 0;
/* Declaration of a TRB-Package */
SEM_UNDO | IPC_NOWAIT /* sem_flg: remove sem if process gets killed */
}
};
-
+
+ if (trb_semlock == 0) return 0;
+
if (semop(semid, sops, 2) == -1) {
- perror("TRB_SEMAPHORE");
+ perror("TRB_SEMAPHORE lock");
trb_errno = TRB_SEMAPHORE;
return -1;
}
}
};
+ if (trb_semlock == 0) return 0;
+
if (semop(semid, sops, 1) == -1) {
- perror("TRB_SEMAPHORE");
+ perror("TRB_SEMAPHORE unlock");
trb_errno = TRB_SEMAPHORE;
return -1;
}
-
+
return 0;
}
/* Set trberrno ?? */
return -1;
}
-
- /* Get / Create semaphore */
- if ((semid = semget(sem_key, 1, IPC_CREAT | 0666)) == -1) {
- trb_errno = TRB_SEMAPHORE;
- return -1;
+
+ /* Get / Create semaphore */
+ if (trb_semlock > 0) {
+ if ((semid = semget(sem_key, 1, IPC_CREAT | 0666)) == -1) {
+ trb_errno = TRB_SEMAPHORE;
+ return -1;
+ }
}
return 0;
extern unsigned int trb_debug;
extern unsigned int trb_lazy;
extern unsigned int trb_dma;
+extern unsigned int trb_semlock;
/* ---------------------------------------------------------------------- */
uint8_t info,
uint8_t random,
uint16_t number);
-
-
-
*/
#endif