summaryrefslogtreecommitdiffstats
path: root/gudev/example.js
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2009-06-01 15:50:15 -0400
committerDavid Zeuthen <davidz@redhat.com>2009-06-01 15:50:15 -0400
commit28f6667f07ce429cc7b5e9796d5490ec9d4748e2 (patch)
treed56daed55289cfdd965b9ca5e3ecb81e14ba6a35 /gudev/example.js
parent10cb151a809c82d4a1b3249229eedb641ba856a7 (diff)
Add a GObject-based wrapper library for libudev
This makes it much simpler to use libudev from programs already using GObject. It also makes it possible to easily use libudev from other programming languages, such as Javascript, because of GObject introspection support.
Diffstat (limited to 'gudev/example.js')
-rwxr-xr-xgudev/example.js67
1 files changed, 67 insertions, 0 deletions
diff --git a/gudev/example.js b/gudev/example.js
new file mode 100755
index 0000000..93aa118
--- /dev/null
+++ b/gudev/example.js
@@ -0,0 +1,67 @@
+
+// right now this only works with seed(1)
+
+const GLib = imports.gi.GLib;
+const GUdev = imports.gi.GUdev;
+
+function print_device (device) {
+ print (" subsystem: " + device.get_subsystem ());
+ print (" devtype: " + device.get_devtype ());
+ print (" name: " + device.get_name ());
+ print (" number: " + device.get_number ());
+ print (" sysfs_path: " + device.get_sysfs_path ());
+ print (" driver: " + device.get_driver ());
+ print (" action: " + device.get_action ());
+ print (" seqnum: " + device.get_seqnum ());
+ print (" device type: " + device.get_device_type ());
+ print (" device number: " + device.get_device_number ());
+ print (" device file: " + device.get_device_file ());
+ print (" device file symlinks: " + device.get_device_file_symlinks ());
+ print (" foo: " + device.get_sysfs_attr_as_strv ("stat"));
+ var keys = device.get_property_keys ();
+ for (var n = 0; n < keys.length; n++) {
+ print (" " + keys[n] + "=" + device.get_property (keys[n]));
+ }
+}
+
+function on_uevent (client, action, device) {
+ print ("action " + action + " on device " + device.get_sysfs_path());
+ print_device (device);
+ print ("");
+}
+
+var client = new GUdev.Client ({subsystems: ["block", "usb/usb_interface"]});
+client.signal.connect ("uevent", on_uevent);
+
+var block_devices = client.query_by_subsystem ("block");
+for (var n = 0; n < block_devices.length; n++) {
+ print ("block device: " + block_devices[n].get_device_file ());
+}
+
+var d;
+
+d = client.query_by_device_number (GUdev.DeviceType.BLOCK, 0x0810);
+print ("query_by_device_number 0x810 -> " + d.get_device_file ());
+dd = d.get_parent_with_subsystem ("usb", null);
+print_device (dd);
+print ("--------------------------------------------------------------------------");
+while (d != null) {
+ print_device (d);
+ print ("");
+ d = d.get_parent ();
+}
+
+d = client.query_by_sysfs_path ("/sys/block/sda/sda1");
+print ("query_by_sysfs_path (\"/sys/block/sda1\") -> " + d.get_device_file ());
+
+d = client.query_by_subsystem_and_name ("block", "sda2");
+print ("query_by_subsystem_and_name (\"block\", \"sda2\") -> " + d.get_device_file ());
+
+d = client.query_by_device_file ("/dev/sda");
+print ("query_by_device_file (\"/dev/sda\") -> " + d.get_device_file ());
+
+d = client.query_by_device_file ("/dev/block/8:0");
+print ("query_by_device_file (\"/dev/block/8:0\") -> " + d.get_device_file ());
+
+var mainloop = GLib.main_loop_new ();
+GLib.main_loop_run (mainloop);