Front page | perl.perl6.internals |
Postings from July 2002
[PATCH] usleep, sleep(num)
Thread Next
From:
Steve Purkis
Date:
July 14, 2002 01:31
Subject:
[PATCH] usleep, sleep(num)
Message ID:
Pine.LNX.3.96.1020713211459.8878A-200000@tiamat.epn.nu
diff -rc parrot_0.0.6/ChangeLog parrot_0.0.6-usleep/ChangeLog
*** parrot_0.0.6/ChangeLog Tue Mar 19 23:03:05 2002
--- parrot_0.0.6-usleep/ChangeLog Sun Jul 14 02:10:42 2002
***************
*** 1,3 ****
--- 1,6 ----
+ 2002-07-14 02:05 spurkis
+ * added usleep(INT) and sleep(NUM) for linux
+
2002-03-19 22:54 nicholas
* docs/running.pod: Patch from Simon Glover <scog@amnh.org>:
diff -rc parrot_0.0.6/config/gen/platform/generic.c parrot_0.0.6-usleep/config/gen/platform/generic.c
*** parrot_0.0.6/config/gen/platform/generic.c Fri May 24 07:32:06 2002
--- parrot_0.0.6-usleep/config/gen/platform/generic.c Sat Jul 13 23:48:53 2002
***************
*** 47,52 ****
--- 47,63 ----
/*
+ ** Parrot_usleep()
+ */
+
+ void
+ Parrot_usleep(unsigned int microseconds)
+ {
+ usleep(microseconds);
+ }
+
+
+ /*
** Parrot_setenv()
*/
diff -rc parrot_0.0.6/config/gen/platform/generic.h parrot_0.0.6-usleep/config/gen/platform/generic.h
*** parrot_0.0.6/config/gen/platform/generic.h Fri May 24 07:32:06 2002
--- parrot_0.0.6-usleep/config/gen/platform/generic.h Sat Jul 13 23:48:53 2002
***************
*** 17,22 ****
--- 17,23 ----
*/
void Parrot_sleep(unsigned int seconds);
+ void Parrot_usleep(unsigned int microseconds);
INTVAL Parrot_intval_time(void);
FLOATVAL Parrot_floatval_time(void);
void Parrot_setenv(const char *name, const char *value);
diff -rc parrot_0.0.6/core.ops parrot_0.0.6-usleep/core.ops
*** parrot_0.0.6/core.ops Wed Jun 5 02:56:08 2002
--- parrot_0.0.6-usleep/core.ops Sun Jul 14 01:58:19 2002
***************
*** 3313,3328 ****
Sleep for $1 seconds
=cut
inline op sleep(in INT) {
if ($1 < 0) {
! internal_exception(NEG_SLEEP, "Cannot go back in time");
}
Parrot_sleep((UINTVAL)$1);
goto NEXT();
}
#######################################
--- 3313,3352 ----
Sleep for $1 seconds
+ =item B<sleep>(in NUM)
+
+ Sleep for $1 fractional seconds
+
+ =item B<usleep>(in INT)
+
+ Sleep for $1 microseconds
+
=cut
inline op sleep(in INT) {
if ($1 < 0) {
! internal_exception(NEG_SLEEP, "Cannot sleep back in time");
}
Parrot_sleep((UINTVAL)$1);
goto NEXT();
}
+ inline op sleep(in NUM) {
+ if ((FLOATVAL) $1 < (FLOATVAL) 0.0) {
+ internal_exception(NEG_SLEEP, "Cannot sleep back in time");
+ }
+ Parrot_usleep((UINTVAL) ($1 * (FLOATVAL) 1000000.0));
+ goto NEXT();
+ }
+
+ inline op usleep(in INT) {
+ if ($1 < 0) {
+ internal_exception(NEG_SLEEP, "Cannot sleep back in time");
+ }
+ Parrot_usleep((UINTVAL)$1);
+ goto NEXT();
+ }
+
#######################################
Only in parrot_0.0.6-usleep/examples/assembly: sleep.pasm
diff -rc parrot_0.0.6/platforms/generic.c parrot_0.0.6-usleep/platforms/generic.c
*** parrot_0.0.6/platforms/generic.c Sun Jun 2 05:10:13 2002
--- parrot_0.0.6-usleep/platforms/generic.c Sat Jul 13 23:48:53 2002
***************
*** 45,50 ****
--- 45,57 ----
}
+ void
+ Parrot_usleep(unsigned int microseconds)
+ {
+ usleep(seconds);
+ }
+
+
/*
** Parrot_setenv()
*/
diff -rc parrot_0.0.6/platforms/generic.h parrot_0.0.6-usleep/platforms/generic.h
*** parrot_0.0.6/platforms/generic.h Fri Mar 8 04:37:25 2002
--- parrot_0.0.6-usleep/platforms/generic.h Sat Jul 13 23:48:53 2002
***************
*** 17,22 ****
--- 17,23 ----
*/
void Parrot_sleep(unsigned int seconds);
+ void Parrot_usleep(unsigned int microseconds);
INTVAL Parrot_intval_time(void);
FLOATVAL Parrot_floatval_time(void);
void Parrot_setenv(const char *name, const char *value);
diff -rc parrot_0.0.6/t/op/time.t parrot_0.0.6-usleep/t/op/time.t
*** parrot_0.0.6/t/op/time.t Sat Jun 1 04:54:19 2002
--- parrot_0.0.6-usleep/t/op/time.t Sun Jul 14 01:58:38 2002
***************
*** 1,6 ****
#! perl -w
! use Parrot::Test tests => 4;
output_is(<<'CODE', <<'OUTPUT', "time_i");
time I0
--- 1,6 ----
#! perl -w
! use Parrot::Test tests => 8;
output_is(<<'CODE', <<'OUTPUT', "time_i");
time I0
***************
*** 65,73 ****
done
OUTPUT
! output_is(<<CODE, 'Cannot go back in time', "sleep");
sleep -1
end
CODE
1;
--- 65,127 ----
done
OUTPUT
! output_is(<<CODE, <<OUTPUT, "usleep");
! print "start\\n"
!
! time N1
!
! usleep 100000
! set I0, 100000
! usleep I0
!
! time N0
!
! gt N0, N1, ALLOK
! print "no, usleeping made time go the wrong way "
!
! ALLOK:
! print "done\\n"
! end
! CODE
! start
! done
! OUTPUT
!
! output_is(<<CODE, <<OUTPUT, "sleep");
! print "start\\n"
!
! time N1
!
! sleep 0.1
! set N0, 0.1
! sleep N0
!
! time N0
!
! gt N0, N1, ALLOK
! print "no, sleeping (fractional time) made time go the wrong way "
!
! ALLOK:
! print "done\\n"
! end
! CODE
! start
! done
! OUTPUT
!
! output_is(<<CODE, 'Cannot sleep back in time', "sleep");
sleep -1
end
CODE
+ output_is(<<CODE, 'Cannot sleep back in time', "sleep");
+ sleep -1.0
+ end
+ CODE
+
+ output_is(<<CODE, 'Cannot sleep back in time', "usleep");
+ usleep -1
+ end
+ CODE
+
1;
Thread Next
-
[PATCH] usleep, sleep(num)
by Steve Purkis