diff options
author | Eric <ewild@sysmocom.de> | 2020-04-12 22:02:02 +0200 |
---|---|---|
committer | Eric <ewild@sysmocom.de> | 2020-04-15 22:43:15 +0200 |
commit | 0bf8882fb6b2b7860994810fc3376fa6d2d98ecb (patch) | |
tree | 49938786b592c8b30f0335871b5c11ea60c09d2b | |
parent | 87a77440f268fd8de41f5c0e2cf5b8cf1d05f97f (diff) |
ipc: fix shm size calculation
Total size was previously only as large as sizeof(struct
ipc_shm_raw_stream) + sizeof(uint32_t)*num_buffers....
Change-Id: I1205b56a4b11bdf32fbdbfb82b67da36965a7981
-rw-r--r-- | Transceiver52M/device/ipc/shm.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/Transceiver52M/device/ipc/shm.c b/Transceiver52M/device/ipc/shm.c index cafb4f2..41de233 100644 --- a/Transceiver52M/device/ipc/shm.c +++ b/Transceiver52M/device/ipc/shm.c @@ -110,11 +110,11 @@ unsigned int ipc_shm_encode_region(struct ipc_shm_raw_region *root_raw, uint32_t if (root_raw) root_raw->num_chans = num_chans; for (i = 0; i < num_chans; i++) { - if (root_raw) { - root_raw->chan_offset[i] = (start + offset - (uint8_t*)root_raw); - fprintf(stderr, "encode: channel %d chan_offset[i]=%u\n", i, root_raw->chan_offset[i]); - offset += ipc_shm_encode_channel(root_raw, (struct ipc_shm_raw_channel *)(start + offset), num_buffers, buffer_size); - } + uint32_t ofs = (start + offset - (uint8_t*)root_raw); + if (root_raw) + root_raw->chan_offset[i] = (start + offset - (uint8_t*)root_raw); + fprintf(stderr, "encode: channel %d chan_offset[i]=%u\n", i, ofs); + offset += ipc_shm_encode_channel(root_raw, (struct ipc_shm_raw_channel *)(start + offset), num_buffers, buffer_size); } //TODO: pass maximum size and verify we didn't go through return offset; |