Skip to content

Commit d59b271

Browse files
committed
8 byte alignment in image_sizing
1 parent 129fa97 commit d59b271

File tree

2 files changed

+33
-33
lines changed

2 files changed

+33
-33
lines changed

ImageStreamIO.c

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -993,8 +993,8 @@ errno_t ImageStreamIO_image_sizing(IMAGE *image, uint8_t* map)
993993

994994
// To here image->md->shared must be 1 i.e. not process-local memory
995995
// Start accumulating size of, and pointers to, data in shmim file
996-
image->memsize = sizeof(IMAGE_METADATA);
997-
map += sizeof(IMAGE_METADATA);
996+
image->memsize = ROUND_UP_8(sizeof(IMAGE_METADATA));
997+
map += ROUND_UP_8(sizeof(IMAGE_METADATA));
998998
// image->md will be assigned elsewhere
999999

10001000

@@ -1003,8 +1003,8 @@ errno_t ImageStreamIO_image_sizing(IMAGE *image, uint8_t* map)
10031003
// image on CPU
10041004
image->
10051005
array.raw = map;
1006-
map += image->md->imdatamemsize;
1007-
image->memsize += image->md->imdatamemsize;
1006+
map += ROUND_UP_8(image->md->imdatamemsize);
1007+
image->memsize += ROUND_UP_8(image->md->imdatamemsize);
10081008
}
10091009
else
10101010
{
@@ -1013,75 +1013,75 @@ errno_t ImageStreamIO_image_sizing(IMAGE *image, uint8_t* map)
10131013
}
10141014

10151015
image->kw = (IMAGE_KEYWORD *)(map);
1016-
map += sizeof(IMAGE_KEYWORD) * image->md->NBkw;
1017-
image->memsize += sizeof(IMAGE_KEYWORD) * image->md->NBkw;
1016+
map += ROUND_UP_8(sizeof(IMAGE_KEYWORD) * image->md->NBkw);
1017+
image->memsize += ROUND_UP_8(sizeof(IMAGE_KEYWORD) * image->md->NBkw);
10181018

10191019

10201020
image->semfile = (SEMFILEDATA*)(map);
1021-
map += sizeof(SEMFILEDATA) * image->md->sem;
1022-
image->memsize += sizeof(SEMFILEDATA) * image->md->sem;
1021+
map += ROUND_UP_8(sizeof(SEMFILEDATA) * image->md->sem);
1022+
image->memsize += ROUND_UP_8(sizeof(SEMFILEDATA) * image->md->sem);
10231023

10241024
image->semlog = (sem_t *)(map);
1025-
map += sizeof(sem_t);
1026-
image->memsize += sizeof(sem_t); // for semlog
1025+
map += ROUND_UP_8(sizeof(sem_t));
1026+
image->memsize += ROUND_UP_8(sizeof(sem_t)); // for semlog
10271027

10281028
// One read PID array, one write PID array
10291029
image->
10301030
semReadPID = (pid_t *)(map);
1031-
map += sizeof(pid_t) * image->md->sem;
1032-
image->memsize += sizeof(pid_t) * image->md->sem;
1031+
map += ROUND_UP_8(sizeof(pid_t) * image->md->sem);
1032+
image->memsize += ROUND_UP_8(sizeof(pid_t) * image->md->sem);
10331033

10341034
image->
10351035
semWritePID = (pid_t *)(map);
1036-
map += sizeof(pid_t) * image->md->sem;
1037-
image->memsize += sizeof(pid_t) * image->md->sem;
1036+
map += ROUND_UP_8(sizeof(pid_t) * image->md->sem);
1037+
image->memsize += ROUND_UP_8(sizeof(pid_t) * image->md->sem);
10381038

10391039
// Calculate space for semctrl integers
10401040
image->semctrl = (uint32_t *)(map);
1041-
map += sizeof(uint32_t) * image->md->sem;
1042-
image->memsize += sizeof(uint32_t) * image->md->sem;
1041+
map += ROUND_UP_8(sizeof(uint32_t) * image->md->sem);
1042+
image->memsize += ROUND_UP_8(sizeof(uint32_t) * image->md->sem);
10431043

10441044
// Calculate space for semstatus integers
10451045
image->
10461046
semstatus = (uint32_t *)(map);
1047-
map += sizeof(uint32_t) * image->md->sem;
1048-
image->memsize += sizeof(uint32_t) * image->md->sem;
1047+
map += ROUND_UP_8(sizeof(uint32_t) * image->md->sem);
1048+
image->memsize += ROUND_UP_8(sizeof(uint32_t) * image->md->sem);
10491049

10501050
image->
10511051
streamproctrace = (STREAM_PROC_TRACE *)(map);
1052-
map += sizeof(STREAM_PROC_TRACE) * image->md->NBproctrace;
1053-
image->memsize += sizeof(STREAM_PROC_TRACE) * image->md->NBproctrace;
1052+
map += ROUND_UP_8(sizeof(STREAM_PROC_TRACE) * image->md->NBproctrace);
1053+
image->memsize += ROUND_UP_8(sizeof(STREAM_PROC_TRACE) * image->md->NBproctrace);
10541054

10551055
if ((image->md->imagetype & 0xF000F) ==
10561056
(CIRCULAR_BUFFER | ZAXIS_TEMPORAL)) // Circular Buffer
10571057
{
10581058
image->
10591059
atimearray = (struct timespec *)(map);
1060-
map += sizeof(struct timespec) * image->md->size[2];
1061-
image->memsize += sizeof(struct timespec) * image->md->size[2];
1060+
map += ROUND_UP_8(sizeof(struct timespec) * image->md->size[2]);
1061+
image->memsize += ROUND_UP_8(sizeof(struct timespec) * image->md->size[2]);
10621062

10631063
image->
10641064
writetimearray = (struct timespec *)(map);
1065-
map += sizeof(struct timespec) * image->md->size[2];
1066-
image->memsize += sizeof(struct timespec) * image->md->size[2];
1065+
map += ROUND_UP_8(sizeof(struct timespec) * image->md->size[2]);
1066+
image->memsize += ROUND_UP_8(sizeof(struct timespec) * image->md->size[2]);
10671067

10681068
image->cntarray = (uint64_t *)(map);
1069-
map += sizeof(uint64_t) * image->md->size[2];
1070-
image->memsize += sizeof(uint64_t) * image->md->size[2];
1069+
map += ROUND_UP_8(sizeof(uint64_t) * image->md->size[2]);
1070+
image->memsize += ROUND_UP_8(sizeof(uint64_t) * image->md->size[2]);
10711071
}
10721072

10731073
// Fast circular buffer metadata
10741074
image->
10751075
CircBuff_md = (CBFRAMEMD *)(map);
1076-
map += sizeof(CBFRAMEMD) * image->md->CBsize;
1077-
image->memsize += sizeof(CBFRAMEMD) * image->md->CBsize;
1076+
map += ROUND_UP_8(sizeof(CBFRAMEMD) * image->md->CBsize);
1077+
image->memsize += ROUND_UP_8(sizeof(CBFRAMEMD) * image->md->CBsize);
10781078

10791079
// Fast circular buffer data buffer
10801080
if (image->md->CBsize > 0)
10811081
{
10821082
image->CBimdata = map;
1083-
map += image->md->imdatamemsize * image->md->CBsize;
1084-
image->memsize += image->md->imdatamemsize * image->md->CBsize;
1083+
map += ROUND_UP_8(image->md->imdatamemsize * image->md->CBsize);
1084+
image->memsize += ROUND_UP_8(image->md->imdatamemsize * image->md->CBsize);
10851085
}
10861086
else
10871087
{
@@ -1092,8 +1092,8 @@ errno_t ImageStreamIO_image_sizing(IMAGE *image, uint8_t* map)
10921092
// Write time buffer
10931093
image->
10941094
writehist = (FRAMEWRITEMD *)(map);
1095-
map += sizeof(FRAMEWRITEMD) * IMAGESTRUCT_FRAMEWRITEMDSIZE;
1096-
image->memsize += sizeof(FRAMEWRITEMD) * IMAGESTRUCT_FRAMEWRITEMDSIZE;
1095+
map += ROUND_UP_8(sizeof(FRAMEWRITEMD) * IMAGESTRUCT_FRAMEWRITEMDSIZE);
1096+
image->memsize += ROUND_UP_8(sizeof(FRAMEWRITEMD) * IMAGESTRUCT_FRAMEWRITEMDSIZE);
10971097
# endif
10981098

10991099
return IMAGESTREAMIO_SUCCESS;

ImageStreamIO.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ extern "C"
2121

2222
void __attribute__((constructor)) libinit_ImageStreamIO();
2323

24-
24+
#define ROUND_UP_8(x) (((x) + 7) & (-8))
2525

2626
errno_t init_ImageStreamIO();
2727

0 commit comments

Comments
 (0)