diff options
author | dimitri staessens <[email protected]> | 2016-07-05 18:52:12 +0200 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2016-07-05 19:07:25 +0200 |
commit | bc9c60382b226e5a75a11a99364b9b799dc2b0c2 (patch) | |
tree | f9072634e81bc152c0ca52b927ab9984a845e0e8 /src/lib/shm_du_map.c | |
parent | db96f7d488681be47abfeec6c636fd4159a37660 (diff) | |
download | ouroboros-bc9c60382b226e5a75a11a99364b9b799dc2b0c2.tar.gz ouroboros-bc9c60382b226e5a75a11a99364b9b799dc2b0c2.zip |
lib: Change invalid pid to -1
The stack used pid 0 (the scheduler) to indicate an invalid process
instance, probably as a leftover from the deprecated application
process instance id. Using -1 is a better solution.
Fixes #16.
Diffstat (limited to 'src/lib/shm_du_map.c')
-rw-r--r-- | src/lib/shm_du_map.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/shm_du_map.c b/src/lib/shm_du_map.c index cf0bad19..6289857f 100644 --- a/src/lib/shm_du_map.c +++ b/src/lib/shm_du_map.c @@ -89,12 +89,12 @@ static void garbage_collect(struct shm_du_map * dum) { #ifdef SHM_DU_MAP_MULTI_BLOCK struct shm_du_buff * sdb; - while ((sdb = get_tail_ptr(dum))->dst_api == 0 && + while ((sdb = get_tail_ptr(dum))->dst_api == -1 && !shm_map_empty(dum)) *dum->ptr_tail = (*dum->ptr_tail + sdb->blocks) & (SHM_BLOCKS_IN_MAP - 1); #else - while (get_tail_ptr(dum)->dst_api == 0 && + while (get_tail_ptr(dum)->dst_api == -1 && !shm_map_empty(dum)) *dum->ptr_tail = (*dum->ptr_tail + 1) & (SHM_BLOCKS_IN_MAP - 1); @@ -110,7 +110,7 @@ static void clean_sdus(struct shm_du_map * dum, pid_t api) while (idx != *dum->ptr_head) { buf = idx_to_du_buff_ptr(dum, idx); if (buf->dst_api == api) - buf->dst_api = 0; + buf->dst_api = -1; #ifdef SHM_DU_MAP_MULTI_BLOCK idx = (idx + buf->blocks) & (SHM_BLOCKS_IN_MAP - 1); #else @@ -271,7 +271,7 @@ struct shm_du_map * shm_du_map_open() pid_t shm_du_map_owner(struct shm_du_map * dum) { if (dum == NULL) - return 0; + return -1; return *dum->api; } @@ -444,7 +444,7 @@ ssize_t shm_du_map_write(struct shm_du_map * dum, sdb = get_head_ptr(dum); sdb->size = 0; sdb->blocks = padblocks; - sdb->dst_api = 0; + sdb->dst_api = -1; sdb->du_head = 0; sdb->du_tail = 0; @@ -518,7 +518,7 @@ int shm_du_map_remove(struct shm_du_map * dum, ssize_t idx) return -1; } - idx_to_du_buff_ptr(dum, idx)->dst_api = 0; + idx_to_du_buff_ptr(dum, idx)->dst_api = -1; if (idx != *dum->ptr_tail) { pthread_mutex_unlock(dum->shm_mutex); |