[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH] Mini-OS events handling cleanup
On Wed, Jul 12, 2006 at 08:24:28AM +0100, Grzegorz Milos wrote: > Hi Grzegorz, > > I've made a few coding-style comments inline. > > > Steven already answerd the most difficult questions, here is the > reminder: > >> > >>--Apple-Mail-3--158434814 > >>Content-Transfer-Encoding: 7bit > >>Content-Type: application/octet-stream; x-unix-mode=0644; > >> name="minios.events.patch" > >>Content-Disposition: attachment; > >> filename=minios.events.patch > >> > >># HG changeset patch > >># User gm281@xxxxxxxxxxxxxxxxxx > >># Node ID ef01229d6344d7ff1c8970512fdb812445ec3430 > >># Parent c3d6610fc0f0510a09bd3d6c63a4e8a3f78312cc > >>Mini-OS: Events handling cleaned up. The interface extended to > >>provide void* pointer to handlers. > >> > >>Signed-off-by: Steven Smith <sos22@xxxxxxxxx> > >>Signed-off-by: Grzegorz Milos <gm281@xxxxxxxxx> > >> > >>diff -r c3d6610fc0f0 -r ef01229d6344 extras/mini-os/console/ > >>xencons_ring.c > >>--- a/extras/mini-os/console/xencons_ring.c Wed Jul 5 10:06:14 2006 > >>+++ b/extras/mini-os/console/xencons_ring.c Wed Jul 5 10:20:15 2006 > >>@@ -53,7 +53,7 @@ > >> > >> > >> > >>-static void handle_input(int port, struct pt_regs *regs) > >>+static void handle_input(int port, struct pt_regs *regs, void *ign) > >>{ > >> struct xencons_interface *intf = xencons_interface(); > >> XENCONS_RING_IDX cons, prod; > >>@@ -83,7 +83,8 @@ > >> if (!start_info.console_evtchn) > >> return 0; > >> > >>- err = bind_evtchn(start_info.console_evtchn, handle_input); > >>+ err = bind_evtchn(start_info.console_evtchn, handle_input, > >>+ NULL); > > > >Could you move the NULL ont the same line as bind_evtchn( ? > > > > Would the line still be shorter then 80 characters? (that was the > reason to put NULL on the next line). It looks like it would be, though if not the newline is the way to go. > >> if (err <= 0) { > >> printk("XEN console request chn bind failed %i\n", err); > >> return err; > >>diff -r c3d6610fc0f0 -r ef01229d6344 extras/mini-os/events.c > >>--- a/extras/mini-os/events.c Wed Jul 5 10:06:14 2006 > >>+++ b/extras/mini-os/events.c Wed Jul 5 10:20:15 2006 > >>@@ -22,9 +22,18 @@ > >>#include <events.h> > >>#include <lib.h> > >> > >>+#define NR_EVS 1024 > >>+ > >>+/* this represents a event handler. Chaining or sharing is not > >>allowed */ > >>+typedef struct _ev_action_t { > >>+ void (*handler)(int, struct pt_regs *, void *); > >>+ void *data; > >>+ u32 count; > >>+} ev_action_t; > >>+ > > > >Tabs and spaces are used inconsistently in the above structure > >definition. > > Ok - will change that. > > > > >>static ev_action_t ev_actions[NR_EVS]; > >>-void default_handler(int port, struct pt_regs *regs); > >>+void default_handler(int port, struct pt_regs *regs, void *data); > >> > >> > >>/* > >>@@ -35,42 +44,33 @@ > >> ev_action_t *action; > >> if (port >= NR_EVS) { > >> printk("Port number too large: %d\n", port); > >>- goto out; > >>+ goto out; > >> } > >> > >> action = &ev_actions[port]; > >> action->count++; > >> > >>- if (!action->handler) > >>- { > >>- printk("Spurious event on port %d\n", port); > >>- goto out; > >>- } > >>- > >>- if (action->status & EVS_DISABLED) > >>- { > >>- printk("Event on port %d disabled\n", port); > >>- goto out; > >>- } > >>- > >> /* call the handler */ > >>- action->handler(port, regs); > >>- > >>+ action->handler(port, regs, action->data); > >>+ > >> out: > >> clear_evtchn(port); > >>+ > >> return 1; > >> > >>} > >> > >>-int bind_evtchn( u32 port, void (*handler)(int, struct pt_regs *) ) > >>+int bind_evtchn( u32 port, void (*handler)(int, struct pt_regs *, > >>void *), > >>+ void *data ) > >>{ > >> if(ev_actions[port].handler != default_handler) > >> printk("WARN: Handler for port %d already registered, > >>replacing\n", > >> port); > >> > >>+ ev_actions[port].data = data; > >>+ wmb(); > >> ev_actions[port].handler = handler; > >>- ev_actions[port].status &= ~EVS_DISABLED; > >>- > >>+ > >> /* Finally unmask the port */ > >> unmask_evtchn(port); > >> > >>@@ -82,13 +82,14 @@ > >> if (ev_actions[port].handler == default_handler) > >> printk("WARN: No handler for port %d when unbinding\n", > >> port); > >> ev_actions[port].handler = default_handler; > >>- ev_actions[port].status |= EVS_DISABLED; > >>+ wmb(); > >>+ ev_actions[port].data = NULL; > >>} > >> > >>-static void xenbus_evtchn_handler(int port, struct pt_regs *regs) > >>+static void xenbus_evtchn_handler(int port, struct pt_regs *regs, > >>void *ign) > >>{ > >> wake_up(&xb_waitq); > >>} > >>@@ -174,7 +174,8 @@ > >> create_thread("xenstore", xenbus_thread_func, NULL); > >> DEBUG("buf at %p.\n", xenstore_buf); > >> err = bind_evtchn(start_info.store_evtchn, > >>- xenbus_evtchn_handler); > >>+ xenbus_evtchn_handler, > >>+ NULL); > > > >Again, could the NULL be appended to the previous line? > > If the lines become too long to put more then one argument I > generally separate each argument into a new line. This seems to be > slightly more readable when you trying to find nth argument. Ok, I'm not sure if there are any hard and fast rules there for xen coding style, which I assume mini-os follows. Perhaps someone else can comment. -- Horms H: http://www.vergenet.net/~horms/ W: http://www.valinux.co.jp/en/ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |