changeset 168:224071eed9dd

Add os sleep
author Mike Pavone <pavone@retrodev.com>
date Sun, 11 Aug 2013 04:02:51 -0700
parents 5a6a55592c45
children 9d8ae39e8e67
files cbackend.js
diffstat 1 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/cbackend.js	Sun Aug 11 03:01:05 2013 -0700
+++ b/cbackend.js	Sun Aug 11 04:02:51 2013 -0700
@@ -775,6 +775,7 @@
 	os.addInclude('<fcntl.h>');
 	os.addInclude('<stdlib.h>');
 	os.addInclude('<time.h>');
+	os.addInclude('<unistd.h>');
 	os.addMessage('write', {
 		vars: {str: 'string *', intret: 'obj_int32 *', filedes: 'obj_int32 *'},
 		lines: [
@@ -905,6 +906,16 @@
 			'return &(intret64->header);'
 		]
 	});
+	os.addMessage('sleep', {
+		vars: {osecs: 'object *', secs: 'obj_int32 *', intret: 'obj_int32 *'},
+		lines: [
+			'osecs = va_arg(args, object *);',
+			'secs = mcall(' + getMethodId("int32") + ', 1, osecs);',
+			'intret = (obj_int32 *)make_object(&obj_int32_meta, NULL, 0);',
+			'intret->num = sleep(secs->num);',
+			'return &(intret->header);'
+		]
+	});
 	toplevel.names['os'] = os;
 }