coffee
Coronagraph Optimization For Fast Exoplanet Exploration
COREMOD_memory.h File Reference

Go to the source code of this file.

Data Structures

struct  LOGSHIM_CONF
 
struct  TCP_BUFFER_METADATA
 

Functions

void __attribute__ ((constructor)) libinit_COREMOD_memory()
 
int_fast8_t init_COREMOD_memory ()
 
int_fast8_t COREMOD_MEMORY_testfunc ()
 
1. MANAGE MEMORY AND IDENTIFIERS
int_fast8_t memory_monitor (const char *termttyname)
 
long compute_nb_image ()
 
long compute_nb_variable ()
 
long long compute_image_memory ()
 
long compute_variable_memory ()
 
long image_ID (const char *name)
 
long image_ID_noaccessupdate (const char *name)
 
long variable_ID (const char *name)
 
long next_avail_image_ID ()
 
long next_avail_variable_ID ()
 
int_fast8_t delete_image_ID (const char *imname)
 
int_fast8_t delete_image_ID_prefix (const char *prefix)
 
int_fast8_t delete_variable_ID (const char *varname)
 
long create_variable_long_ID (const char *name, long value)
 
long create_variable_string_ID (const char *name, const char *value)
 
long create_image_ID (const char *name, long naxis, uint32_t *size, uint8_t atype, int shared, int nbkw)
 
int_fast8_t clearall ()
 
void * save_fits_function (void *ptr)
 
2. KEYWORDS
long image_write_keyword_L (const char *IDname, const char *kname, long value, const char *comment)
 
long image_write_keyword_D (const char *IDname, const char *kname, double value, const char *comment)
 
long image_write_keyword_S (const char *IDname, const char *kname, const char *value, const char *comment)
 
long image_list_keywords (const char *IDname)
 
long image_read_keyword_D (const char *IDname, const char *kname, double *val)
 
long image_read_keyword_L (const char *IDname, const char *kname, long *val)
 
3. READ SHARED MEM IMAGE AND SIZE
long read_sharedmem_image_size (const char *name, const char *fname)
 
long read_sharedmem_image (const char *name)
 
4. CREATE IMAGE
long create_1Dimage_ID (const char *ID_name, uint32_t xsize)
 
long create_1DCimage_ID (const char *ID_name, uint32_t xsize)
 
long create_2Dimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_2Dimage_ID_double (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_2DCimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_2DCimage_ID_double (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
long create_3Dimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
long create_3Dimage_ID_double (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
long create_3DCimage_ID (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
5. CREATE VARIABLE
long create_variable_ID (const char *name, double value)
 
6. COPY IMAGE
long copy_image_ID (const char *name, const char *newname, int shared)
 
long chname_image_ID (const char *ID_name, const char *new_name)
 
long COREMOD_MEMORY_cp2shm (const char *IDname, const char *IDshmname)
 
7. DISPLAY / LISTS
int_fast8_t init_list_image_ID_ncurses (const char *termttyname)
 
void close_list_image_ID_ncurses (void)
 
int_fast8_t list_image_ID_ncurses ()
 
int_fast8_t list_image_ID_ofp (FILE *fo)
 
int_fast8_t list_image_ID_ofp_simple (FILE *fo)
 
int_fast8_t list_image_ID ()
 
int_fast8_t list_image_ID_file (const char *fname)
 
int_fast8_t list_variable_ID ()
 
int_fast8_t list_variable_ID_file (const char *fname)
 
8. TYPE CONVERSIONS TO AND FROM COMPLEX
int_fast8_t mk_complex_from_reim (const char *re_name, const char *im_name, const char *out_name, int sharedmem)
 
int_fast8_t mk_complex_from_amph (const char *am_name, const char *ph_name, const char *out_name, int sharedmem)
 
int_fast8_t mk_reim_from_complex (const char *in_name, const char *re_name, const char *im_name, int sharedmem)
 
int_fast8_t mk_amph_from_complex (const char *in_name, const char *am_name, const char *ph_name, int sharedmem)
 
int_fast8_t mk_reim_from_amph (const char *am_name, const char *ph_name, const char *re_out_name, const char *im_out_name, int sharedmem)
 
int_fast8_t mk_amph_from_reim (const char *re_name, const char *im_name, const char *am_out_name, const char *ph_out_name, int sharedmem)
 
9. VERIFY SIZE
int_fast8_t check_2Dsize (const char *ID_name, uint32_t xsize, uint32_t ysize)
 
int_fast8_t check_3Dsize (const char *ID_name, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
long COREMOD_MEMORY_check_2Dsize (const char *IDname, uint32_t xsize, uint32_t ysize)
 
long COREMOD_MEMORY_check_3Dsize (const char *IDname, uint32_t xsize, uint32_t ysize, uint32_t zsize)
 
10. COORDINATE CHANGE
int_fast8_t rotate_cube (const char *ID_name, const char *ID_out_name, int orientation)
 
11. SET IMAGE FLAGS / COUNTERS
long COREMOD_MEMORY_image_set_status (const char *IDname, int status)
 
long COREMOD_MEMORY_image_set_cnt0 (const char *IDname, int cnt0)
 
long COREMOD_MEMORY_image_set_cnt1 (const char *IDname, int cnt1)
 
12. MANAGE SEMAPHORES
long COREMOD_MEMORY_image_set_createsem (const char *IDname, long NBsem)
 
long COREMOD_MEMORY_image_set_sempost (const char *IDname, long index)
 
long COREMOD_MEMORY_image_set_sempost_byID (long ID, long index)
 
long COREMOD_MEMORY_image_set_sempost_excl_byID (long ID, long index)
 
long COREMOD_MEMORY_image_set_sempost_loop (const char *IDname, long index, long dtus)
 
long COREMOD_MEMORY_image_set_semwait (const char *IDname, long index)
 
void * waitforsemID (void *ID)
 
long COREMOD_MEMORY_image_set_semwait_OR_IDarray (long *IDarray, long NB_ID)
 Wait for multiple images semaphores [OR], only works for sem0. More...
 
long COREMOD_MEMORY_image_set_semflush_IDarray (long *IDarray, long NB_ID)
 flush multiple semaphores More...
 
long COREMOD_MEMORY_image_set_semflush (const char *IDname, long index)
 set semaphore value to 0 More...
 
13. SIMPLE OPERATIONS ON STREAMS
long COREMOD_MEMORY_streamDiff (const char *IDstream0_name, const char *IDstream1_name, const char *IDstreammask_name, const char *IDstreamout_name, long semtrig)
 Difference between two streams. More...
 
long COREMOD_MEMORY_stream_halfimDiff (const char *IDstream_name, const char *IDstreamout_name, long semtrig)
 
long COREMOD_MEMORY_streamAve (const char *IDstream_name, int NBave, int mode, const char *IDout_name)
 Averages frames in stream. More...
 
long COREMOD_MEMORY_image_streamupdateloop (const char *IDinname, const char *IDoutname, long usperiod, long NBcubes, long period, long offsetus, const char *IDsync_name, int semtrig, int timingmode)
 takes a 3Dimage (circular buffer) and writes slices to a 2D image with time interval specified in us More...
 
long COREMOD_MEMORY_image_streamupdateloop_semtrig (const char *IDinname, const char *IDoutname, long period, long offsetus, const char *IDsync_name, int semtrig, int timingmode)
 takes a 3Dimage (circular buffer) and writes slices to a 2D image synchronized with an image semaphore More...
 
long COREMOD_MEMORY_streamDelay (const char *IDin_name, const char *IDout_name, long delayus, long dtus)
 
long COREMOD_MEMORY_SaveAll_snapshot (const char *dirname)
 
long COREMOD_MEMORY_SaveAll_sequ (const char *dirname, const char *IDtrig_name, long semtrig, long NBframes)
 
long COREMOD_MEMORY_image_NETWORKtransmit (const char *IDname, const char *IPaddr, int port, int mode, int RT_priority)
 
long COREMOD_MEMORY_image_NETWORKreceive (int port, int mode, int RT_priority)
 
long COREMOD_MEMORY_PixMapDecode_U (const char *inputstream_name, uint32_t xsizeim, uint32_t ysizeim, const char *NBpix_fname, const char *IDmap_name, const char *IDout_name, const char *IDout_pixslice_fname)
 
14. DATA LOGGING
int_fast8_t COREMOD_MEMORY_logshim_printstatus (const char *IDname)
 
int_fast8_t COREMOD_MEMORY_logshim_set_on (const char *IDname, int setv)
 
int_fast8_t COREMOD_MEMORY_logshim_set_logexit (const char *IDname, int setv)
 
long COREMOD_MEMORY_sharedMem_2Dim_log (const char *IDname, uint32_t zsize, const char *logdir, const char *IDlogdata_name)
 

Function Documentation

void __attribute__ ( (constructor)  )
int_fast8_t check_2Dsize ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
int_fast8_t check_3Dsize ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long chname_image_ID ( const char *  ID_name,
const char *  new_name 
)
int_fast8_t clearall ( )
void close_list_image_ID_ncurses ( void  )
long long compute_image_memory ( )
long compute_nb_image ( )
long compute_nb_variable ( )
long compute_variable_memory ( )
long copy_image_ID ( const char *  name,
const char *  newname,
int  shared 
)
long COREMOD_MEMORY_check_2Dsize ( const char *  IDname,
uint32_t  xsize,
uint32_t  ysize 
)
long COREMOD_MEMORY_check_3Dsize ( const char *  IDname,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long COREMOD_MEMORY_cp2shm ( const char *  IDname,
const char *  IDshmname 
)

copy an image to shared memory

long COREMOD_MEMORY_image_NETWORKreceive ( int  port,
int  mode,
int  RT_priority 
)
long COREMOD_MEMORY_image_NETWORKtransmit ( const char *  IDname,
const char *  IPaddr,
int  port,
int  mode,
int  RT_priority 
)

continuously transmits 2D image through TCP link mode = 1, force counter to be used for synchronization, ignore semaphores if they exist

long COREMOD_MEMORY_image_set_cnt0 ( const char *  IDname,
int  cnt0 
)
long COREMOD_MEMORY_image_set_cnt1 ( const char *  IDname,
int  cnt1 
)
long COREMOD_MEMORY_image_set_createsem ( const char *  IDname,
long  NBsem 
)
long COREMOD_MEMORY_image_set_semflush ( const char *  IDname,
long  index 
)

set semaphore value to 0

long COREMOD_MEMORY_image_set_semflush_IDarray ( long *  IDarray,
long  NB_ID 
)

flush multiple semaphores

long COREMOD_MEMORY_image_set_sempost ( const char *  IDname,
long  index 
)
long COREMOD_MEMORY_image_set_sempost_byID ( long  ID,
long  index 
)
long COREMOD_MEMORY_image_set_sempost_excl_byID ( long  ID,
long  index 
)
long COREMOD_MEMORY_image_set_sempost_loop ( const char *  IDname,
long  index,
long  dtus 
)
long COREMOD_MEMORY_image_set_semwait ( const char *  IDname,
long  index 
)
long COREMOD_MEMORY_image_set_semwait_OR_IDarray ( long *  IDarray,
long  NB_ID 
)

Wait for multiple images semaphores [OR], only works for sem0.

long COREMOD_MEMORY_image_set_status ( const char *  IDname,
int  status 
)
long COREMOD_MEMORY_image_streamupdateloop ( const char *  IDinname,
const char *  IDoutname,
long  usperiod,
long  NBcubes,
long  period,
long  offsetus,
const char *  IDsync_name,
int  semtrig,
int  timingmode 
)

takes a 3Dimage (circular buffer) and writes slices to a 2D image with time interval specified in us

takes a 3Dimage (circular buffer) and writes slices to a 2D image with time interval specified in us

If NBcubes=1, then the circular buffer named IDinname is sent to IDoutname at a frequency of 1/usperiod MHz If NBcubes>1, several circular buffers are used, named ("%S_%03ld", IDinname, cubeindex). Semaphore semtrig of image IDsync_name triggers switch between circular buffers, with a delay of offsetus. The number of consecutive sem posts required to advance to the next circular buffer is period

Parameters
IDinnameName of DM circular buffer (appended by _000, _001 etc... if NBcubes>1)
IDoutnameOutput DM channel stream
usperiodInterval between consecutive frames [us]
NBcubesNumber of input DM circular buffers
periodIf NBcubes>1: number of input triggers required to advance to next input buffer
offsetusIf NBcubes>1: time offset [us] between input trigger and input buffer switch
IDsync_nameIf NBcubes>1: Stream used for synchronization
semtrigIf NBcubes>1: semaphore used for synchronization
timingmodeNot used
long COREMOD_MEMORY_image_streamupdateloop_semtrig ( const char *  IDinname,
const char *  IDoutname,
long  period,
long  offsetus,
const char *  IDsync_name,
int  semtrig,
int  timingmode 
)

takes a 3Dimage (circular buffer) and writes slices to a 2D image synchronized with an image semaphore

Parameters
[in]IDinname3D circular buffer of frames to be written
[out]IDoutname2D output stream
[in]periodnumber of semaphore waits required to advance to next slice in the circular buffer
[in]offsetusfixed time offset between trigger stream and output write
[in]IDsync_nametrigger stream
[in]smmtrigsemaphore index for trigger
[in]timingmode
int_fast8_t COREMOD_MEMORY_logshim_printstatus ( const char *  IDname)
int_fast8_t COREMOD_MEMORY_logshim_set_logexit ( const char *  IDname,
int  setv 
)
int_fast8_t COREMOD_MEMORY_logshim_set_on ( const char *  IDname,
int  setv 
)
long COREMOD_MEMORY_PixMapDecode_U ( const char *  inputstream_name,
uint32_t  xsizeim,
uint32_t  ysizeim,
const char *  NBpix_fname,
const char *  IDmap_name,
const char *  IDout_name,
const char *  IDout_pixslice_fname 
)
long COREMOD_MEMORY_SaveAll_sequ ( const char *  dirname,
const char *  IDtrig_name,
long  semtrig,
long  NBframes 
)
long COREMOD_MEMORY_SaveAll_snapshot ( const char *  dirname)
long COREMOD_MEMORY_sharedMem_2Dim_log ( const char *  IDname,
uint32_t  zsize,
const char *  logdir,
const char *  IDlogdata_name 
)
long COREMOD_MEMORY_stream_halfimDiff ( const char *  IDstream_name,
const char *  IDstreamout_name,
long  semtrig 
)

difference between two halves of stream image

long COREMOD_MEMORY_streamAve ( const char *  IDstream_name,
int  NBave,
int  mode,
const char *  IDout_name 
)

Averages frames in stream.

Parameters
[in]IDstream_nameInput stream
[in]NBaveNumber of consecutive frames to be averaged together
[in]mode1: Perform average once, exit when completed and write output to local image 2: Run forever, write output to shared mem stream
[out]IDout_nameoutput stream name
long COREMOD_MEMORY_streamDelay ( const char *  IDin_name,
const char *  IDout_name,
long  delayus,
long  dtus 
)

IDout_name is a time-delayed copy of IDin_name

long COREMOD_MEMORY_streamDiff ( const char *  IDstream0_name,
const char *  IDstream1_name,
const char *  IDstreammask_name,
const char *  IDstreamout_name,
long  semtrig 
)

Difference between two streams.

int_fast8_t COREMOD_MEMORY_testfunc ( )

Test function aimed at creating unsolved seg fault bug Will crash under gcc-7 if -O3 or -Ofast gcc compilation flag

long create_1DCimage_ID ( const char *  ID_name,
uint32_t  xsize 
)
long create_1Dimage_ID ( const char *  ID_name,
uint32_t  xsize 
)
long create_2DCimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_2DCimage_ID_double ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_2Dimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_2Dimage_ID_double ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize 
)
long create_3DCimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long create_3Dimage_ID ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long create_3Dimage_ID_double ( const char *  ID_name,
uint32_t  xsize,
uint32_t  ysize,
uint32_t  zsize 
)
long create_image_ID ( const char *  name,
long  naxis,
uint32_t *  size,
uint8_t  atype,
int  shared,
int  nbkw 
)
long create_variable_ID ( const char *  name,
double  value 
)

floating point double

long create_variable_long_ID ( const char *  name,
long  value 
)

long

long create_variable_string_ID ( const char *  name,
const char *  value 
)

string

int_fast8_t delete_image_ID ( const char *  imname)
int_fast8_t delete_image_ID_prefix ( const char *  prefix)
int_fast8_t delete_variable_ID ( const char *  varname)
long image_ID ( const char *  name)
long image_ID_noaccessupdate ( const char *  name)
long image_list_keywords ( const char *  IDname)
long image_read_keyword_D ( const char *  IDname,
const char *  kname,
double *  val 
)
long image_read_keyword_L ( const char *  IDname,
const char *  kname,
long *  val 
)
long image_write_keyword_D ( const char *  IDname,
const char *  kname,
double  value,
const char *  comment 
)
long image_write_keyword_L ( const char *  IDname,
const char *  kname,
long  value,
const char *  comment 
)
long image_write_keyword_S ( const char *  IDname,
const char *  kname,
const char *  value,
const char *  comment 
)
int_fast8_t init_COREMOD_memory ( )
int_fast8_t init_list_image_ID_ncurses ( const char *  termttyname)
int_fast8_t list_image_ID ( )
int_fast8_t list_image_ID_file ( const char *  fname)
int_fast8_t list_image_ID_ncurses ( )
int_fast8_t list_image_ID_ofp ( FILE *  fo)
int_fast8_t list_image_ID_ofp_simple ( FILE *  fo)
int_fast8_t list_variable_ID ( )
int_fast8_t list_variable_ID_file ( const char *  fname)
int_fast8_t memory_monitor ( const char *  termttyname)
int_fast8_t mk_amph_from_complex ( const char *  in_name,
const char *  am_name,
const char *  ph_name,
int  sharedmem 
)
int_fast8_t mk_amph_from_reim ( const char *  re_name,
const char *  im_name,
const char *  am_out_name,
const char *  ph_out_name,
int  sharedmem 
)
int_fast8_t mk_complex_from_amph ( const char *  am_name,
const char *  ph_name,
const char *  out_name,
int  sharedmem 
)
int_fast8_t mk_complex_from_reim ( const char *  re_name,
const char *  im_name,
const char *  out_name,
int  sharedmem 
)
int_fast8_t mk_reim_from_amph ( const char *  am_name,
const char *  ph_name,
const char *  re_out_name,
const char *  im_out_name,
int  sharedmem 
)
int_fast8_t mk_reim_from_complex ( const char *  in_name,
const char *  re_name,
const char *  im_name,
int  sharedmem 
)
long next_avail_image_ID ( )
long next_avail_variable_ID ( )
long read_sharedmem_image ( const char *  name)
long read_sharedmem_image_size ( const char *  name,
const char *  fname 
)

Purpose

Read shared memory image size

Arguments

Parameters
[in]namechar*
  • stream name
[in]fnamechar* file name to write image name
int_fast8_t rotate_cube ( const char *  ID_name,
const char *  ID_out_name,
int  orientation 
)
void* save_fits_function ( void *  ptr)
long variable_ID ( const char *  name)
void* waitforsemID ( void *  ID)