summaryrefslogtreecommitdiff
path: root/src/lib/shm_ap_rbuff.c
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2016-07-07 15:12:42 +0200
committerdimitri staessens <[email protected]>2016-07-07 15:12:42 +0200
commit04a8f3ceedefa63f9344311e5ff05ab3ce754fda (patch)
treeb95e680ff8e2ef267587f959ab0a7f6ae5d93227 /src/lib/shm_ap_rbuff.c
parent80441117cf61137c6a8c97e0779e70d76ae8541d (diff)
downloadouroboros-04a8f3ceedefa63f9344311e5ff05ab3ce754fda.tar.gz
ouroboros-04a8f3ceedefa63f9344311e5ff05ab3ce754fda.zip
lib: Add lockfile
The pid of the IRMd is stored in a lockfile in shared memory. This makes checking if the IRMd is running independent of the configuration, as previously the IRMd pid was stored at the end of the shm_du_map, which could not be read by an IRMd that would be compiled with different configuration options. Also corrects some unnecessary includes Fixes #21.
Diffstat (limited to 'src/lib/shm_ap_rbuff.c')
-rw-r--r--src/lib/shm_ap_rbuff.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/lib/shm_ap_rbuff.c b/src/lib/shm_ap_rbuff.c
index 4eb91136..cf795601 100644
--- a/src/lib/shm_ap_rbuff.c
+++ b/src/lib/shm_ap_rbuff.c
@@ -26,7 +26,7 @@
#include <ouroboros/logs.h>
#include <ouroboros/shm_ap_rbuff.h>
-#include <ouroboros/shm_du_map.h>
+#include <ouroboros/lockfile.h>
#include <pthread.h>
#include <sys/mman.h>
@@ -215,7 +215,7 @@ void shm_ap_rbuff_close(struct shm_ap_rbuff * rb)
void shm_ap_rbuff_destroy(struct shm_ap_rbuff * rb)
{
char fn[25];
- struct shm_du_map * dum = NULL;
+ struct lockfile * lf = NULL;
if (rb == NULL) {
LOG_DBGF("Bogus input. Bugging out.");
@@ -223,15 +223,17 @@ void shm_ap_rbuff_destroy(struct shm_ap_rbuff * rb)
}
if (rb->api != getpid()) {
- dum = shm_du_map_open();
- if (shm_du_map_owner(dum) == getpid()) {
+ lf = lockfile_open();
+ if (lf == NULL)
+ return;
+ if (lockfile_owner(lf) == getpid()) {
LOG_DBGF("Ringbuffer %d destroyed by IRMd %d.",
rb->api, getpid());
- shm_du_map_close(dum);
+ lockfile_close(lf);
} else {
LOG_ERR("AP-I %d tried to destroy rbuff owned by %d.",
getpid(), rb->api);
- shm_du_map_close(dum);
+ lockfile_close(lf);
return;
}
}