diff options
author | Franz Zotter <fzotter@users.sourceforge.net> | 2006-03-26 21:34:29 +0000 |
---|---|---|
committer | Franz Zotter <fzotter@users.sourceforge.net> | 2006-03-26 21:34:29 +0000 |
commit | 233856ed92f86cdb4e07da8877df20cb931d5ef7 (patch) | |
tree | 95410040d0ddff89a3276dbecc820ab94abf6cc2 /pdoctave_dataframe.c | |
parent | 4998870e6829a2a3818ae87557f81f220442a6b0 (diff) |
pdoctave weekend, yeah! So obviously, total nerdness has struck me already. IAOUOIASSFAIUOOOOOOAA!!!
But it works!!!
- Octave error handling for errors of write_shared_mem.cc (i.e. undefined variables).
- Return value for non existent data packages corrected in write_shared_mem.cc (it has to be removeSharedData instead of freeSharedData in exceptional cases)
- opening octave on library startup
- removed annoying post messages
yesyesyes,
perhaps it's time for Georgies threadlib "detach" for pdoctave_get now!
svn path=/trunk/externals/iem/pdoctave/; revision=4775
Diffstat (limited to 'pdoctave_dataframe.c')
-rw-r--r-- | pdoctave_dataframe.c | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/pdoctave_dataframe.c b/pdoctave_dataframe.c index a5d64a6..89d4455 100644 --- a/pdoctave_dataframe.c +++ b/pdoctave_dataframe.c @@ -1,5 +1,5 @@ #include "pdoctave_dataframe.h" -static int scheduling_ok = 1; +//static int scheduling_ok = 1; SharedDataFrame *newSharedDataFrame () { @@ -207,40 +207,48 @@ void blockForWriting (SharedDataFrame *sdf) int sleepUntilReadUnBlocked (SharedDataFrame *sdf) { - //alarm(MAX_SLEEP_TIME); - while ((sdf->block_for_read!=0)&&scheduling_ok) - sched_yield(); - return scheduling_ok; + int elapsed_time=0; + while ((sdf->block_for_read!=0)&&(elapsed_time<MAX_USLEEP_TIME)) { + elapsed_time += STD_USLEEP_TIME; + usleep(STD_USLEEP_TIME); + } + return (elapsed_time<MAX_USLEEP_TIME); } int sleepUntilReadBlocked (SharedDataFrame *sdf) { - //alarm(MAX_SLEEP_TIME); - while ((sdf->block_for_read==0)&&scheduling_ok) - sched_yield(); - return scheduling_ok; + int elapsed_time=0; + while ((sdf->block_for_read==0)&&(elapsed_time<MAX_USLEEP_TIME)) { + elapsed_time += STD_USLEEP_TIME; + usleep(STD_USLEEP_TIME); + } + return (elapsed_time<MAX_USLEEP_TIME); } int sleepUntilWriteUnBlocked (SharedDataFrame *sdf) { - //alarm(MAX_SLEEP_TIME); - while ((sdf->block_for_write!=0)&&scheduling_ok) - sched_yield(); - return scheduling_ok; + int elapsed_time=0; + while ((sdf->block_for_write!=0)&&(elapsed_time<MAX_USLEEP_TIME)) { + elapsed_time += STD_USLEEP_TIME; + usleep(STD_USLEEP_TIME); + } + return (elapsed_time<MAX_USLEEP_TIME); } int sleepUntilWriteBlocked (SharedDataFrame *sdf) { - //alarm(MAX_SLEEP_TIME); - while ((sdf->block_for_write==0)&&scheduling_ok) - sched_yield(); - return scheduling_ok; + int elapsed_time=0; + while ((sdf->block_for_write==0)&&(elapsed_time<MAX_USLEEP_TIME)) { + elapsed_time += STD_USLEEP_TIME; + usleep(STD_USLEEP_TIME); + } + return (elapsed_time<MAX_USLEEP_TIME); } /* void sleepUntilReadUnBlocked (SharedDataFrame *sdf, int usleep_time) { int timer = 0; if (sdf) { - while ((sdf->block_for_read!=0)&&(timer < MAX_SLEEP_TIME)) { + while ((sdf->block_for_read!=0)&&(timer < MAX_USLEEP_TIME)) { timer += usleep_time; usleep (usleep_time); } @@ -250,7 +258,7 @@ void sleepUntilReadBlocked (SharedDataFrame *sdf, int usleep_time) { int timer = 0; if (sdf) { - while ((sdf->block_for_read==0)&&(timer < MAX_SLEEP_TIME)) { + while ((sdf->block_for_read==0)&&(timer < MAX_USLEEP_TIME)) { timer +=usleep_time; usleep (usleep_time); } @@ -261,7 +269,7 @@ void sleepUntilWriteUnBlocked (SharedDataFrame *sdf, int usleep_time) { int timer = 0; if (sdf) { - while ((sdf->block_for_write!=0)&&(timer < MAX_SLEEP_TIME)) { + while ((sdf->block_for_write!=0)&&(timer < MAX_USLEEP_TIME)) { timer +=usleep_time; usleep (usleep_time); } @@ -272,7 +280,7 @@ void sleepUntilWriteBlocked (SharedDataFrame *sdf, int usleep_time) { int timer = 0; if (sdf) { - while ((sdf->block_for_write==0)&&(timer < MAX_SLEEP_TIME)) { + while ((sdf->block_for_write==0)&&(timer < MAX_USLEEP_TIME)) { timer +=usleep_time; usleep (usleep_time); } |