From 0164644def16e8e24054a2bf0e44c952b16d3215 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 28 Dec 2011 20:43:27 +0000 Subject: [PATCH] Play with some possible *.api code. --- APIs/block_devices.api | 4 ++++ APIs/mkdir.api | 1 + APIs/mknod.api | 18 ++++++++++++++++++ APIs/processes.api | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 APIs/block_devices.api create mode 100644 APIs/mkdir.api create mode 100644 APIs/mknod.api create mode 100644 APIs/processes.api diff --git a/APIs/block_devices.api b/APIs/block_devices.api new file mode 100644 index 0000000..8d4fc30 --- /dev/null +++ b/APIs/block_devices.api @@ -0,0 +1,4 @@ +object block_device + dir_list "/sys/block/[hsv]d[a-z]*" + + property string name << return safe_strdup ($basename); >> diff --git a/APIs/mkdir.api b/APIs/mkdir.api new file mode 100644 index 0000000..2070c41 --- /dev/null +++ b/APIs/mkdir.api @@ -0,0 +1 @@ +function err mkdir (pathname path, fileperm perm) (* implicit *);; diff --git a/APIs/mknod.api b/APIs/mknod.api new file mode 100644 index 0000000..3ed3c55 --- /dev/null +++ b/APIs/mknod.api @@ -0,0 +1,18 @@ +function +err mknod_char (pathname path, fileperm perm, int major, int minor) +<< + return mknod (path, S_IFCHR | perm, makedev (major, minor)); +>> +<:doc< + + + +>> + +;; + +(* +mknod_block +mkfifo +mknod_socket +*) diff --git a/APIs/processes.api b/APIs/processes.api new file mode 100644 index 0000000..090245e --- /dev/null +++ b/APIs/processes.api @@ -0,0 +1,34 @@ +object process + dir_list "/proc/[1-9]*" + + constructor << + $pid = atoi ($basename); + >> + + property int pid (* implicit *) + + property string short_command + << + // some code to parse $filename/stat + >> + property char state + << + // some code to parse $filename/stat + >> + + writable property foo << ... >> + + method err kill (signal sig) + << + return kill ($pid, sig); + >> + method bool exists () + << + int r = kill ($pid, 0); + if (r == 0) + return 1; + if (r == -1 && errno == ESRCH) + return 0; + save_errno (); + return -1; + >> -- 1.8.3.1