aboutsummaryrefslogtreecommitdiff
path: root/pdoctave_dataframe.c
diff options
context:
space:
mode:
Diffstat (limited to 'pdoctave_dataframe.c')
-rw-r--r--pdoctave_dataframe.c35
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)
}
}
-
+ */