um: sorting out the chan mess, part 1
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 8 Sep 2011 11:07:26 +0000 (07:07 -0400)
committerRichard Weinberger <richard@nod.at>
Sat, 24 Mar 2012 23:29:54 +0000 (00:29 +0100)
put references to in and out chans associated with line into
explicit struct chan * fields in it.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Richard Weinberger <richard@nod.at>
arch/um/drivers/chan_kern.c
arch/um/drivers/line.h

index 3a95498155a198e5dbb624a04712074892d45645..390920d63a24240d3f4d57eb3287e9b477b62637 100644 (file)
@@ -547,6 +547,7 @@ int parse_chan_pair(char *str, struct line *line, int device,
        char *in, *out;
 
        if (!list_empty(chans)) {
+               line->chan_in = line->chan_out = NULL;
                free_chan(chans);
                INIT_LIST_HEAD(chans);
        }
@@ -565,6 +566,7 @@ int parse_chan_pair(char *str, struct line *line, int device,
 
                new->input = 1;
                list_add(&new->list, chans);
+               line->chan_in = new;
 
                new = parse_chan(line, out, device, opts, error_out);
                if (new == NULL)
@@ -572,6 +574,7 @@ int parse_chan_pair(char *str, struct line *line, int device,
 
                list_add(&new->list, chans);
                new->output = 1;
+               line->chan_out = new;
        }
        else {
                new = parse_chan(line, str, device, opts, error_out);
@@ -581,6 +584,7 @@ int parse_chan_pair(char *str, struct line *line, int device,
                list_add(&new->list, chans);
                new->input = 1;
                new->output = 1;
+               line->chan_in = line->chan_out = new;
        }
        return 0;
 }
index 95991994a93be0f2619af7e513d0c554d5f44273..6cb05a22e9b03af310678d15186001bcd7f77b5f 100644 (file)
@@ -39,6 +39,7 @@ struct line {
 
        char *init_str;
        struct list_head chan_list;
+       struct chan *chan_in, *chan_out;
 
        /*This lock is actually, mostly, local to*/
        spinlock_t lock;