milk  1.01
Modular Image processing Library toolKit
ImageStreamIO.h
Go to the documentation of this file.
1 
10 #ifndef _IMAGESTREAMIO_H
11 #define _IMAGESTREAMIO_H
12 
13 #ifdef __cplusplus
14 extern "C"
15 {
16 #endif
17 
18 #include "ImageStruct.h"
19 
20 
21 void __attribute__ ((constructor)) libinit_ImageStreamIO();
22 
23 
24 
25 errno_t init_ImageStreamIO();
26 
33 
43 errno_t ImageStreamIO_set_printError( errno_t (*new_printError)( const char *, const char *, int, errno_t, char * ) );
44 
45 
46 /* =============================================================================================== */
47 /* =============================================================================================== */
50 /* =============================================================================================== */
51 /* =============================================================================================== */
52 
53 inline uint64_t ImageStreamIO_nbSlices(const IMAGE *image) {
54  return (image->md->naxis == 3 ? image->md->size[2] : 1);
55 }
56 
57 inline uint64_t ImageStreamIO_writeIndex(const IMAGE *image) {
58  return (image->md->cnt1 + 1) % ImageStreamIO_nbSlices(image);
59 }
60 
61 inline uint64_t ImageStreamIO_readLastWroteIndex(const IMAGE *image) {
62  return (image->md->naxis == 3 ? image->md->cnt1 : 0);
63 }
64 
89  const IMAGE *image,
90  const unsigned int slice_index,
91  void **buffer
92 );
93 
114  const IMAGE *image,
115  void **buffer
116 ) {
117  const uint64_t write_index = ImageStreamIO_writeIndex(image);
118  return ImageStreamIO_readBufferAt(image, write_index, buffer);
119 }
120 
121 
142  const IMAGE *image,
143  void **buffer
144 ) {
145  const int64_t read_index = ImageStreamIO_readLastWroteIndex(image);
146  return ImageStreamIO_readBufferAt(image, read_index, buffer);
147 }
148 
165 errno_t ImageStreamIO_filename(
166  char * file_name,
167  size_t ssz,
168  const char * im_name
169 );
170 
176 int ImageStreamIO_typesize( uint8_t atype
177  );
178 
184 int ImageStreamIO_bitpix( uint8_t atype
185  );
186 
188 
189 /* =============================================================================================== */
190 /* =============================================================================================== */
193 /* =============================================================================================== */
194 /* =============================================================================================== */
195 
197 errno_t ImageStreamIO_createIm(
198  IMAGE *image,
199  const char *name,
200  long naxis,
201  uint32_t *size,
202  uint8_t atype,
203  int shared,
204  int NBkw
205 );
206 
209  IMAGE *image,
210  const char *name,
211  long naxis,
212  uint32_t *size,
213  uint8_t atype,
214  int8_t location,
215  int shared,
216  int NBsem,
217  int NBkw,
218  uint64_t imagetype
219 );
220 
237  IMAGE *image
238 );
239 
244 errno_t ImageStreamIO_openIm(
245  IMAGE *image,
246  const char *name
247 );
248 
249 
250 
252 
253 
256  const char *name,
257  IMAGE *image
258 );
259 
260 
269 errno_t ImageStreamIO_closeIm(IMAGE * image );
270 
272 
273 /* =============================================================================================== */
274 /* =============================================================================================== */
277 /* =============================================================================================== */
278 /* =============================================================================================== */
279 
280 
295  IMAGE *image
296 );
297 
314  IMAGE *image,
315  long NBsem
316 );
317 
318 
319 
339  IMAGE *image,
340  long index
341 );
342 
343 
344 
362  IMAGE *image,
363  long index
364 );
365 
366 
367 
389  IMAGE *image,
390  long index,
391  long dtus
392 );
393 
400  IMAGE *image,
401  int semindexdefault
402 );
403 
404 
422  IMAGE *image,
423  int index
424 );
426  IMAGE *image,
427  int index
428 );
430  IMAGE *image,
431  int index,
432  const struct timespec *semwts
433 );
434 
435 
454  IMAGE *image,
455  long index
456 );
457 
459 
460 
461 #ifdef __cplusplus
462 } //extern "C"
463 #endif
464 
465 
466 #endif
467 
468 
IMAGE_METADATA::naxis
uint8_t naxis
Number of axis.
Definition: ImageStruct.h:219
ImageStreamIO_getsemwaitindex
int ImageStreamIO_getsemwaitindex(IMAGE *image, int semindexdefault)
Get available semaphore index.
Definition: ImageStreamIO.c:1657
ImageStreamIO_closeIm
errno_t ImageStreamIO_closeIm(IMAGE *image)
Close a shared memmory image stream.
Definition: ImageStreamIO.c:1286
IMAGE_METADATA::cnt1
uint64_t cnt1
Definition: ImageStruct.h:320
IMAGE
IMAGE structure The IMAGE structure includes :
Definition: ImageStruct.h:366
ImageStreamIO_readLastWroteBuffer
errno_t ImageStreamIO_readLastWroteBuffer(const IMAGE *image, void **buffer)
Get the raw pointer where the consumer will find the last frame wrote.
Definition: ImageStreamIO.h:141
ImageStreamIO_filename
errno_t ImageStreamIO_filename(char *file_name, size_t ssz, const char *im_name)
Get the standard stream filename.
Definition: ImageStreamIO.c:369
ImageStreamIO_semtimedwait
int ImageStreamIO_semtimedwait(IMAGE *image, int index, const struct timespec *semwts)
Definition: ImageStreamIO.c:1750
ImageStreamIO_set_default_printError
errno_t ImageStreamIO_set_default_printError()
Set the error reporting function to the default provided by the library.
Definition: ImageStreamIO.c:102
ImageStreamIO_destroysem
int ImageStreamIO_destroysem(IMAGE *image)
Destroy shmim semaphores.
Definition: ImageStreamIO.c:1336
ImageStreamIO_readBufferAt
errno_t ImageStreamIO_readBufferAt(const IMAGE *image, const unsigned int slice_index, void **buffer)
Get the raw pointer to the beginning of the slice slice_index.
Definition: ImageStreamIO.c:283
ImageStreamIO_read_sharedmem_image_toIMAGE
errno_t ImageStreamIO_read_sharedmem_image_toIMAGE(const char *name, IMAGE *image)
Read / connect to existing shared memory image stream.
Definition: ImageStreamIO.c:1051
ImageStreamIO_destroyIm
errno_t ImageStreamIO_destroyIm(IMAGE *image)
Deallocate and remove an IMAGE structure.
Definition: ImageStreamIO.c:925
ImageStreamIO_sempost
long ImageStreamIO_sempost(IMAGE *image, long index)
Post all shmim semaphores.
Definition: ImageStreamIO.c:1485
ImageStreamIO_set_printError
errno_t ImageStreamIO_set_printError(errno_t(*new_printError)(const char *, const char *, int, errno_t, char *))
Set the error reporting function. The new function supplied by the pointer will be called whenever a ...
Definition: ImageStreamIO.c:108
ImageStreamIO_bitpix
int ImageStreamIO_bitpix(uint8_t atype)
Get the FITSIO BITPIX from the data type code.
Definition: ImageStreamIO.c:447
ImageStreamIO_createIm
errno_t ImageStreamIO_createIm(IMAGE *image, const char *name, long naxis, uint32_t *size, uint8_t atype, int shared, int NBkw)
Create shared memory image stream (legacy API)
Definition: ImageStreamIO.c:582
ImageStruct.h
Image structure definition.
__attribute__
errno_t __attribute__((hot))
Logs a shared memory stream onto disk.
Definition: logshmim.c:685
ImageStreamIO_sempost_loop
long ImageStreamIO_sempost_loop(IMAGE *image, long index, long dtus)
Post shmim semaphores at regular time interval.
Definition: ImageStreamIO.c:1622
ImageStreamIO_typesize
int ImageStreamIO_typesize(uint8_t atype)
Get the size in bytes from the data type code.
Definition: ImageStreamIO.c:406
ImageStreamIO_createsem
int ImageStreamIO_createsem(IMAGE *image, long NBsem)
Create shmim semaphores.
Definition: ImageStreamIO.c:1407
ImageStreamIO_semflush
long ImageStreamIO_semflush(IMAGE *image, long index)
Flush all semaphores of a shmim.
Definition: ImageStreamIO.c:1783
ImageStreamIO_semtrywait
int ImageStreamIO_semtrywait(IMAGE *image, int index)
Definition: ImageStreamIO.c:1735
ImageStreamIO_openIm
errno_t ImageStreamIO_openIm(IMAGE *image, const char *name)
Connect to an existing shared memory image stream.
Definition: ImageStreamIO.c:997
ImageStreamIO_semwait
int ImageStreamIO_semwait(IMAGE *image, int index)
Wait for semaphore.
Definition: ImageStreamIO.c:1720
ImageStreamIO_get_image_d_ptr
void * ImageStreamIO_get_image_d_ptr(IMAGE *image)
Definition: ImageStreamIO.c:1007
ImageStreamIO_createIm_gpu
errno_t ImageStreamIO_createIm_gpu(IMAGE *image, const char *name, long naxis, uint32_t *size, uint8_t atype, int8_t location, int shared, int NBsem, int NBkw, uint64_t imagetype)
Create shared memory image stream.
Definition: ImageStreamIO.c:600
IMAGE_METADATA::size
uint32_t size[3]
Image size along each axis.
Definition: ImageStruct.h:226
ImageStreamIO_writeBuffer
errno_t ImageStreamIO_writeBuffer(const IMAGE *image, void **buffer)
Get the raw pointer where the producer should write.
Definition: ImageStreamIO.h:113
ImageStreamIO_sempost_excl
long ImageStreamIO_sempost_excl(IMAGE *image, long index)
Post all shmim semaphores except one.
Definition: ImageStreamIO.c:1560