diff options
Diffstat (limited to 'pdoctave_dataframe.h')
-rw-r--r-- | pdoctave_dataframe.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/pdoctave_dataframe.h b/pdoctave_dataframe.h new file mode 100644 index 0000000..53a21cc --- /dev/null +++ b/pdoctave_dataframe.h @@ -0,0 +1,66 @@ +#ifndef __pdoctave_data_frame_h__ +#define __pdoctave_data_frame_h__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <unistd.h> +#include <sys/shm.h> +#include <sys/stat.h> +#include <sys/ipc.h> +#include <sys/wait.h> +#include <stdio.h> + +#include "pdoctave_datatypes.h" + +#define STD_USLEEP_TIME 100 +#define MAX_SLEEP_TIME 200000 + +typedef struct _SharedDataFrame_ SharedDataFrame; + +struct _SharedDataFrame_ { + int data_frame_id; + + int data_vec_id; + int data_vec_len; + int data_size_bytes; + DatTyp data_typ; + + // internal states + int frame_attached; + int data_attached; + + int block_for_read; + int block_for_write; +}; + +SharedDataFrame *newSharedDataFrame (); +SharedDataFrame *getSharedDataFrame (int id); +void freeSharedDataFrame (SharedDataFrame **sdf); +void removeSharedDataFrame (SharedDataFrame **sdf); +int getSharedDataFrameId (SharedDataFrame *sdf); + +DatTyp getSharedDataType (SharedDataFrame *sdf); +int getSharedDataVecLength (SharedDataFrame *sdf); + +void *newSharedData (SharedDataFrame *sdf, int n, int size_bytes, DatTyp dtyp); +void *getSharedData (SharedDataFrame *sdf); +void freeSharedData (SharedDataFrame *sdf, void **data); +void removeSharedData (SharedDataFrame *sdf, void **data); + +void unBlockForReading (SharedDataFrame *sdf); +void unBlockForWriting (SharedDataFrame *sdf); +void blockForReading (SharedDataFrame *sdf); +void blockForWriting (SharedDataFrame *sdf); +void sleepUntilReadUnBlocked (SharedDataFrame *sdf, int usleep_time); +void sleepUntilReadBlocked (SharedDataFrame *sdf, int usleep_time); +void sleepUntilWriteUnBlocked (SharedDataFrame *sdf, int usleep_time); +void sleepUntilWriteBlocked (SharedDataFrame *sdf, int usleep_time); + + +#ifdef __cplusplus +} +#endif + +#endif |