summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2010-04-26 10:58:49 -0700
committerCorbin Simpson <MostAwesomeDude@gmail.com>2010-04-26 10:58:49 -0700
commitce717b27bea85037c266b02eb569de5ec4efb068 (patch)
tree9758739bb127980fb24bbed52f37ec7ed21d7d65
Initial commit.
Whoosh!
-rwxr-xr-xmain.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/main.py b/main.py
new file mode 100755
index 0000000..5fee22e
--- /dev/null
+++ b/main.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+from ctypes import *
+import os
+import sys
+
+os.environ["LD_BIND_NOW"] = "Yes, please!"
+
+raw = CDLL(sys.argv[1])
+
+class drm_api(Structure):
+ pass
+
+drm_api._fields_ = [
+ ("destroy", CFUNCTYPE(None, POINTER(drm_api))),
+ ("name", c_char_p),
+ ("driver_name", c_char_p),
+ ("create_screen",
+ CFUNCTYPE(c_void_p, POINTER(drm_api), c_int, c_void_p)),
+]
+
+raw.drmOpen.argtypes = [c_char_p, c_char_p]
+raw.drmOpen.restype = c_int
+
+raw.drm_api_create.restype = POINTER(drm_api)
+
+class DrmApi(object):
+
+ def __init__(self, handle):
+ self.drm_api = handle.drm_api_create()
+
+ def __del__(self):
+ self.drm_api[0].destroy(self.drm_api)
+
+ def create_screen(self, fd):
+ screen = self.drm_api[0].create_screen(self.drm_api, fd, None)
+ print screen
+
+ @property
+ def name(self):
+ return self.drm_api[0].name
+
+da = DrmApi(raw)
+
+print "Loaded drm_api object, name %s" % da.name
+
+screen = da.create_screen(raw.drmOpen(da.name, None))