def __init__(self, log, shm_id=1): # Connect or create shm try: self.stat_buf = shmw.SharedMemoryHandle(STATUS_KEY + shm_id - 1) log.info("Connected to status shm key: %d"%(STATUS_KEY + shm_id - 1)) except KeyError: self.a = shm.create_memory(STATUS_KEY + shm_id - 1, STATUS_SIZE, 0666) log.info("Created new status shm key: %d"%(STATUS_KEY + shm_id - 1)) # Init self.chk_init() self.stat_buf = shmw.SharedMemoryHandle(STATUS_KEY + shm_id - 1) log.info("Connected to status shm key: %d"%(STATUS_KEY + shm_id - 1)) # Semaphore for status shm try: self.semid = shm.getsemid(STATUS_SEM_KEY + shm_id - 1) self.sem = shm.semaphore(self.semid) except KeyError: self.sem = shm.create_semaphore(STATUS_SEM_KEY + shm_id - 1) self.semid = shm.getsemid(STATUS_SEM_KEY + shm_id - 1) self.hdr = None self.read()
def __init__(self, log, shm_id=1): # Connect or create shm try: self.stat_buf = shmw.SharedMemoryHandle(STATUS_KEY + shm_id - 1) log.info("Connected to status shm key: 0x%08x" % (STATUS_KEY + shm_id - 1)) print("Try Connected to status shm key: 0x%08x" % (STATUS_KEY + shm_id - 1)) except KeyError: self.a = shm.create_memory(STATUS_KEY + shm_id - 1, STATUS_SIZE, 0666) log.info("Created new status shm key: 0x%08x" % (STATUS_KEY + shm_id - 1)) print("Created new status shm key: 0x%08x" % (STATUS_KEY + shm_id - 1)) # Init self.chk_init() self.stat_buf = shmw.SharedMemoryHandle(STATUS_KEY + shm_id - 1) log.info("Connected to status shm key: 0x%08x" % (STATUS_KEY + shm_id - 1)) print("Connected to status shm key: 0x%08x" % (STATUS_KEY + shm_id - 1)) # Semaphore for status shm try: self.semid = shm.getsemid(STATUS_SEM_KEY + shm_id - 1) self.sem = shm.semaphore(self.semid) except KeyError: self.sem = shm.create_semaphore(STATUS_SEM_KEY + shm_id - 1) self.semid = shm.getsemid(STATUS_SEM_KEY + shm_id - 1) self.hdr = None if (self.sem.val == 3): log.info("WARNING sem 0x%08x is lock" % (STATUS_SEM_KEY + shm_id - 1)) print("WARNING sem 0x%08x is lock" % (STATUS_SEM_KEY + shm_id - 1)) self.read()
def create_semaphore(InitialValue=1, permissions=0666): """ Creates a new semaphore. One can destroy it either by calling the module-level method remove_semaphore() or by calling the .remove() method of a handle to said semaphore. """ semaphore = None # I create the semaphore using a randomly-generated key. I keep trying until I find one # that works or until I hit an error. while not semaphore: key = random.randint(1, sys.maxint - 1) try: semaphore = shm.create_semaphore(key, InitialValue, permissions) except shm.error, ExtraData: if shm.semaphore_haskey(key): # Oops, bad luck, the key exists. I'll try another. I can't call # memory_haskey() before calling create_semaphore() because that would create # a race condition where I could verify a key is not used but then another # process could call create_semaphore() with that key before I got a chance to # do so. pass else: # Uh-oh, something fundamental is wrong. raise ExtraData
def main(self): #tlog("tab is initiated") #fstat = os.stat(sys.argv[0]) #os.seteuid(fstat[stat.ST_UID]) #opt.parse_options(sys.argv[4:]) # opt.parse_options(["-l","-m","-k"]) # tlog("tab argv:" + str(sys.argv)) #self.tab_origin = sys.argv[2] self.escaped = None self.message_handler = message.MessageHandler() m = self.message_handler.recv() assert m[0] == message.DomainSet self.tab_origin = m[1] libsoup.soup_set_t2k_raw_socket(int(sys.argv[1])) #if opt.options.use_kcookies: # cookie cache is always on. #libsoup.soup_set_kcookies_flag(1) # create a pair of sockets for cookies cparent, cchild = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) self.message_handler.send([message.CookieChannelInit, cchild]) libsoup.soup_set_t2c_raw_socket(int(cparent.fileno())) print "t2c_socket is set" self.cookie_soc = cparent self.cookie_soc.setblocking(1) gobject.io_add_watch(self.cookie_soc.fileno(), gobject.IO_IN, self.handle_cinput) #gtk.timeout_add(500, lambda : gobject.io_add_watch(self.cookie_soc.fileno(), gobject.IO_IN, self.handle_cinput)) self.cmessage_handler = message.MessageHandler(self.cookie_soc) #self.soc = socket.fromfd(int(sys.argv[1]), msg.FAMILY, msg.TYPE) self.soc = self.message_handler.KCHAN self.soc.setblocking(1) self.shm_obj = create_memory(5000000) self.shm_obj.attach() self.sem_obj = shm.create_semaphore(self.shm_obj.shmid, 1) self.sem_obj.setperm(0600) self.sem_obj.setuid(quarkexec.quark_output_uid) self.sem_obj.setblocking(True) gobject.io_add_watch(self.soc.fileno(), gobject.IO_IN, self.handle_input) gobject.io_add_watch(self.soc.fileno(), gobject.IO_HUP, self.handle_hup) self.view = webkit.WebView() self.view.connect('expose-event', self.expose) self.view.connect('resource-request-starting', self.resource_cb) self.view.connect('notify::progress', self.progress_cb) self.view.connect('navigation-policy-decision-requested', self.navigation_cb) self.view.connect('create-web-view', self.create_web_view_cb) #self.view.connect('notify::load-status', self.load_status_cb) settings = self.view.get_settings() settings.set_property("enable-plugins", False) self.frames = {} win = gtk.OffscreenWindow() vsize = config.ydimension win.set_default_size(1100, vsize - 200) win.add(self.view) #vbox = gtk.VBox(False, 0) #win.add(vbox) #vbox.show() #addr_bar = gtk.Entry(max=0) #addr_bar.set_text("hello world!") #vbox.pack_start(addr_bar, True, True, 0) #addr_bar.show() #vbox.add(self.view) #win.add(self.view) self.view.show() win.connect('damage-event', self.damage) win.show_all() #self.vbox = vbox self.win = win (x, y, width, height, depth) = self.view.get_window().get_geometry() #(x,y,width,height,depth) = self.win.get_window().get_geometry() #print self.win.get_window() #raise "aa" #(x,y,width,height,depth) = self.win.get_window().get_geometry() self.pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, width, height) #self.tab_origin = sys.argv[2] #m = msg.create_display_shm(self.shm_obj.shmid, 0) #self.write_message(m) tlog("default url : " + self.add_http(self.tab_origin)) #self.view.open(self.add_http(self.tab_origin)) #gtk.timeout_add(50, self.iterated_render) #self.rthread = threading.Thread(target=self.drawing_thread, args=()) #self.rthread.start() #t_thread = threading.Thread(target=self.input_thread, args=()) #t_thread.start() gtk.main()
key = os.getpid() # Create the semaphore & shared memory. I read somewhere that semaphores and shared memory # have separate key spaces, so one can safely use the same key for each. This seems to be # true in my experience. # For purposes of simplicity, this demo code makes no allowance for the failure of # create_memory() or create_semaphore(). This is unrealistic because one can never predict # whether or not a given key will be available, so your code must *always* be prepared for # these functions to fail. This is one of the advantages to using shm_wrapper -- it handles # key generation for you so you can assume that all failures are catastrophic (e.g. # no shared memory available on the system). SemaphoreHandle = shm.create_semaphore(key, 0) MemoryHandle = shm.create_memory(key, 1024) # I seed the shared memory with a random value which is the current time turned into a string. WhatIWrote = str(time.time()) s = WhatIWrote WriteToMemory(MemoryHandle, WhatIWrote) say("OK, I'm ready. Start Mrs. Conclusion with the parameter %d and then hit Enter to make me continue." % key) raw_input("") for i in xrange(0, DemoConstants.ITERATIONS):
def main(self): #tlog("tab is initiated") #fstat = os.stat(sys.argv[0]) #os.seteuid(fstat[stat.ST_UID]) #opt.parse_options(sys.argv[4:]) # opt.parse_options(["-l","-m","-k"]) # tlog("tab argv:" + str(sys.argv)) libsoup.soup_set_t2k_raw_socket(int(sys.argv[1])) #if opt.options.use_kcookies: # cookie cache is always on. libsoup.soup_set_kcookies_flag(1) self.soc = socket.fromfd(int(sys.argv[1]), msg.FAMILY, msg.TYPE) self.soc.setblocking(1) self.shm_obj = create_memory(5000000) self.shm_obj.attach() self.sem_obj = shm.create_semaphore(self.shm_obj.shmid, 1) self.sem_obj.setperm(0600) self.sem_obj.setuid(quarkexec.quark_output_uid) self.sem_obj.setblocking(True) self.escaped = None gobject.io_add_watch(self.soc.fileno(), gobject.IO_IN, self.handle_input) gobject.io_add_watch(self.soc.fileno(), gobject.IO_HUP, self.handle_hup) self.view = webkit.WebView() self.view.connect('expose-event', self.expose) self.view.connect('resource-request-starting', self.resource_cb) self.view.connect('notify::progress', self.progress_cb) self.view.connect('navigation-policy-decision-requested', self.navigation_cb) self.view.connect('create-web-view', self.create_web_view_cb) #self.view.connect('notify::load-status', self.load_status_cb) settings = self.view.get_settings() settings.set_property("enable-plugins", False) self.frames = {} win = gtk.OffscreenWindow() win.set_default_size(1100,700) win.add(self.view) win.connect('damage-event', self.damage) win.show_all() self.win = win (x,y,width,height,depth) = self.view.get_window().get_geometry() self.pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,width,height) self.tab_origin = sys.argv[2] m = msg.create_display_shm(self.shm_obj.shmid, 0) self.write_message(m) self.view.open(self.add_http(self.tab_origin)) #gtk.timeout_add(50, self.iterated_render) #self.rthread = threading.Thread(target=self.drawing_thread, args=()) #self.rthread.start() #t_thread = threading.Thread(target=self.input_thread, args=()) #t_thread.start() gtk.main()
def main(self): #tlog("tab is initiated") #fstat = os.stat(sys.argv[0]) #os.seteuid(fstat[stat.ST_UID]) #opt.parse_options(sys.argv[4:]) # opt.parse_options(["-l","-m","-k"]) # tlog("tab argv:" + str(sys.argv)) #self.tab_origin = sys.argv[2] self.escaped = None self.message_handler = message.MessageHandler() m = self.message_handler.recv() assert m[0] == message.DomainSet self.tab_origin = m[1] libsoup.soup_set_t2k_raw_socket(int(sys.argv[1])) #if opt.options.use_kcookies: # cookie cache is always on. #libsoup.soup_set_kcookies_flag(1) # create a pair of sockets for cookies cparent, cchild = socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM) self.message_handler.send([message.CookieChannelInit, cchild]) libsoup.soup_set_t2c_raw_socket(int(cparent.fileno())) print "t2c_socket is set" self.cookie_soc = cparent self.cookie_soc.setblocking(1) gobject.io_add_watch(self.cookie_soc.fileno(), gobject.IO_IN, self.handle_cinput) #gtk.timeout_add(500, lambda : gobject.io_add_watch(self.cookie_soc.fileno(), gobject.IO_IN, self.handle_cinput)) self.cmessage_handler = message.MessageHandler(self.cookie_soc) #self.soc = socket.fromfd(int(sys.argv[1]), msg.FAMILY, msg.TYPE) self.soc = self.message_handler.KCHAN self.soc.setblocking(1) self.shm_obj = create_memory(5000000) self.shm_obj.attach() self.sem_obj = shm.create_semaphore(self.shm_obj.shmid, 1) self.sem_obj.setperm(0600) self.sem_obj.setuid(quarkexec.quark_output_uid) self.sem_obj.setblocking(True) gobject.io_add_watch(self.soc.fileno(), gobject.IO_IN, self.handle_input) gobject.io_add_watch(self.soc.fileno(), gobject.IO_HUP, self.handle_hup) self.view = webkit.WebView() self.view.connect('expose-event', self.expose) self.view.connect('resource-request-starting', self.resource_cb) self.view.connect('notify::progress', self.progress_cb) self.view.connect('navigation-policy-decision-requested', self.navigation_cb) self.view.connect('create-web-view', self.create_web_view_cb) #self.view.connect('notify::load-status', self.load_status_cb) settings = self.view.get_settings() settings.set_property("enable-plugins", False) self.frames = {} win = gtk.OffscreenWindow() vsize = config.ydimension win.set_default_size(1100, vsize - 200) win.add(self.view) #vbox = gtk.VBox(False, 0) #win.add(vbox) #vbox.show() #addr_bar = gtk.Entry(max=0) #addr_bar.set_text("hello world!") #vbox.pack_start(addr_bar, True, True, 0) #addr_bar.show() #vbox.add(self.view) #win.add(self.view) self.view.show() win.connect('damage-event', self.damage) win.show_all() #self.vbox = vbox self.win = win (x,y,width,height,depth) = self.view.get_window().get_geometry() #(x,y,width,height,depth) = self.win.get_window().get_geometry() #print self.win.get_window() #raise "aa" #(x,y,width,height,depth) = self.win.get_window().get_geometry() self.pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,width,height) #self.tab_origin = sys.argv[2] #m = msg.create_display_shm(self.shm_obj.shmid, 0) #self.write_message(m) tlog("default url : " + self.add_http(self.tab_origin)) #self.view.open(self.add_http(self.tab_origin)) #gtk.timeout_add(50, self.iterated_render) #self.rthread = threading.Thread(target=self.drawing_thread, args=()) #self.rthread.start() #t_thread = threading.Thread(target=self.input_thread, args=()) #t_thread.start() gtk.main()