diff options
Diffstat (limited to 'pdoctave_dataframe.c')
-rw-r--r-- | pdoctave_dataframe.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/pdoctave_dataframe.c b/pdoctave_dataframe.c index 7193c62..1ff6f09 100644 --- a/pdoctave_dataframe.c +++ b/pdoctave_dataframe.c @@ -1,4 +1,5 @@ #include "pdoctave_dataframe.h" +static int scheduling_ok = 1; SharedDataFrame *newSharedDataFrame () { @@ -203,6 +204,38 @@ void blockForWriting (SharedDataFrame *sdf) if (sdf) sdf->block_for_write = 1; } + +int sleepUntilReadUnBlocked (SharedDataFrame *sdf) +{ + alarm(MAX_SLEEP_TIME); + while ((sdf->block_for_read!=0)&&scheduling_ok) + sched_yield(); + return scheduling_ok; +} + +int sleepUntilReadBlocked (SharedDataFrame *sdf) +{ + alarm(MAX_SLEEP_TIME); + while ((sdf->block_for_read==0)&&scheduling_ok) + sched_yield(); + return scheduling_ok; +} + +int sleepUntilWriteUnBlocked (SharedDataFrame *sdf) +{ + alarm(MAX_SLEEP_TIME); + while ((sdf->block_for_write!=0)&&scheduling_ok) + sched_yield(); + return scheduling_ok; +} +int sleepUntilWriteBlocked (SharedDataFrame *sdf) +{ + alarm(MAX_SLEEP_TIME); + while ((sdf->block_for_write==0)&&scheduling_ok) + sched_yield(); + return scheduling_ok; +} +/* void sleepUntilReadUnBlocked (SharedDataFrame *sdf, int usleep_time) { int timer = 0; @@ -246,4 +279,4 @@ void sleepUntilWriteBlocked (SharedDataFrame *sdf, int usleep_time) } } - + */ |