diff --git a/src/gds/awgtpman/awg.c b/src/gds/awgtpman/awg.c index 18a068833ef8f54aa1f395ea326298b308e745fc..941cc3b9b1ab56cf84f02127a687d9a137c851db 100644 --- a/src/gds/awgtpman/awg.c +++ b/src/gds/awgtpman/awg.c @@ -920,7 +920,7 @@ Organization of generating waveforms: for (i = 0, p = buf->buf; i < MAX_NUM_AWG; i++, p++) { /* test whether valid test point channel */ - AWG_DATA_PAGE *target_page; + volatile AWG_DATA_PAGE *target_page; switch (p->otype) { case awgLSCtp: diff --git a/src/gds/awgtpman/shared_memory.h b/src/gds/awgtpman/shared_memory.h index 37ae79f493ce58941cc3af2a114c6f64df685188..8fb2fe4710a41a1c33fbc5a246a405d29b5b25cd 100644 --- a/src/gds/awgtpman/shared_memory.h +++ b/src/gds/awgtpman/shared_memory.h @@ -18,4 +18,29 @@ extern volatile AWG_DATA *shmemAwgData; */ int OpenAwgDataSharedMemory(const char *model_name); + +// helper functions for volatile pointers + +/** + * Copy to a volatile pointer from a regular pointer. + * Works the same as memcpy() + * @param dest The destination pointer. Should be volatile. + * @param src The source pointer. + * @param len Number of bytes to copy. + * @return The destination pointer. + */ +volatile void * memcpy_to_vol(volatile void *dest, const void *src, size_t len); + +/** + * + * @param dest + * @param src + * @param len + * @return + */ +void * memcpy_from_vol(void *dest, const volatile void *src, size_t len); + +volatile void * memcpy_vol_to_vol(volatile void *dest, const volatile void *src, size_t len); + + #endif // DAQD_TRUNK_SHARED_MEMORY_H