From 4eea65f0cd06ecd356fc371e707cda174537e616 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 27 Mar 2011 13:39:09 -0400 Subject: Change return values in the shm interface to be more like socket export. All regression tests pass. Code splints clean. shm live-testing works. --- shmexport.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'shmexport.c') diff --git a/shmexport.c b/shmexport.c index 4d615abf..c79d4c08 100644 --- a/shmexport.c +++ b/shmexport.c @@ -63,6 +63,7 @@ void shm_update(struct gps_context_t *context, struct gps_data_t *gpsdata) if (context->shmexport != NULL) { static int tick; + struct shmexport_t *shared = (struct shmexport_t *)context->shmexport; ++tick; /* @@ -76,13 +77,14 @@ void shm_update(struct gps_context_t *context, struct gps_data_t *gpsdata) * start to write the segment during the read, the second bookend will * get clobbered first and the data can be detected as bad. */ - ((struct shmexport_t *)context->shmexport)->bookend2 = tick; + shared->bookend2 = tick; barrier(); memcpy((void *)(context->shmexport + offsetof(struct shmexport_t, gpsdata)), (void *)gpsdata, sizeof(struct gps_data_t)); + shared->gpsdata.gps_fd = -1; barrier(); - ((struct shmexport_t *)context->shmexport)->bookend1 = tick; + shared->bookend1 = tick; } } -- cgit v1.2.1