Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0

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):
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
    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()