add loopback medium, tweak spatch files.
authorRonald G. Minnich <rminnich@google.com>
Thu, 16 Jan 2014 22:22:54 +0000 (14:22 -0800)
committerRonald G. Minnich <rminnich@google.com>
Thu, 16 Jan 2014 22:45:38 +0000 (14:45 -0800)
Signed-off-by: Ronald G. Minnich <rminnich@google.com>
kern/include/ip.h
kern/src/net/Kbuild
kern/src/net/loopbackmedium.c
scripts/spatch/typedef.cocci

index 3a5f97d..c87fd70 100644 (file)
@@ -41,12 +41,13 @@ enum
 /*
  *  one per conversation directory
  */
 /*
  *  one per conversation directory
  */
+struct Proto;
 struct conv
 {
        qlock_t qlock;
 
        int     x;                      /* conversation index */
 struct conv
 {
        qlock_t qlock;
 
        int     x;                      /* conversation index */
-       struct proto*   p;
+       struct Proto*   p;
 
        int     restricted;             /* remote port is restricted */
        uint32_t        ttl;                    /* max time to live */
 
        int     restricted;             /* remote port is restricted */
        uint32_t        ttl;                    /* max time to live */
@@ -86,7 +87,7 @@ struct conv
 
        struct ipmulti  *multi;                 /* multicast bindings for this interface */
 
 
        struct ipmulti  *multi;                 /* multicast bindings for this interface */
 
-       void*   ptcl;                   /* protocol specific stuff */
+       void*   ptcl;                   /* Protocol specific stuff */
 
        struct route    *r;                     /* last route used */
        uint32_t        rgen;                   /* routetable generation for *r */
 
        struct route    *r;                     /* last route used */
        uint32_t        rgen;                   /* routetable generation for *r */
@@ -253,7 +254,7 @@ void iphtrem(struct Ipht*, struct conv*);
 struct conv* iphtlook(struct Ipht *ht, uint8_t *sa, uint16_t sp, uint8_t *da, uint16_t dp);
 
 /*
 struct conv* iphtlook(struct Ipht *ht, uint8_t *sa, uint16_t sp, uint8_t *da, uint16_t dp);
 
 /*
- *  one per multiplexed protocol
+ *  one per multiplexed Protocol
  */
 struct Proto
 {
  */
 struct Proto
 {
@@ -268,14 +269,14 @@ struct Proto
        int             (*state)(struct conv*, char *unused_char_p_t, int);
        void            (*create)(struct conv*);
        void            (*close)(struct conv*);
        int             (*state)(struct conv*, char *unused_char_p_t, int);
        void            (*create)(struct conv*);
        void            (*close)(struct conv*);
-       void            (*rcv)(struct proto*, struct Ipifc*, struct block*);
+       void            (*rcv)(struct Proto*, struct Ipifc*, struct block*);
        char*           (*ctl)(struct conv*, char **unused_char_pp_t, int);
        char*           (*ctl)(struct conv*, char **unused_char_pp_t, int);
-       void            (*advise)(struct proto*, struct block*, char *unused_char_p_t);
-       int             (*stats)(struct proto*, char *unused_char_p_t, int);
+       void            (*advise)(struct Proto*, struct block*, char *unused_char_p_t);
+       int             (*stats)(struct Proto*, char *unused_char_p_t, int);
        int             (*local)(struct conv*, char *unused_char_p_t, int);
        int             (*remote)(struct conv*, char *unused_char_p_t, int);
        int             (*inuse)(struct conv*);
        int             (*local)(struct conv*, char *unused_char_p_t, int);
        int             (*remote)(struct conv*, char *unused_char_p_t, int);
        int             (*inuse)(struct conv*);
-       int             (*gc)(struct proto*);   /* returns true if any conversations are freed */
+       int             (*gc)(struct Proto*);   /* returns true if any conversations are freed */
 
        struct Fs               *f;             /* file system this proto is part of */
        struct conv             **conv;         /* array of conversations */
 
        struct Fs               *f;             /* file system this proto is part of */
        struct conv             **conv;         /* array of conversations */
@@ -307,10 +308,10 @@ struct Fs
        int     dev;
 
        int     np;
        int     dev;
 
        int     np;
-       struct proto*   p[Maxproto+1];          /* list of supported protocols */
-       struct proto*   t2p[256];               /* vector of all protocols */
-       struct proto*   ipifc;                  /* kludge for ipifcremroute & ipifcaddroute */
-       struct proto*   ipmux;                  /* kludge for finding an ip multiplexor */
+       struct Proto*   p[Maxproto+1];          /* list of supported protocols */
+       struct Proto*   t2p[256];               /* vector of all protocols */
+       struct Proto*   ipifc;                  /* kludge for ipifcremroute & ipifcaddroute */
+       struct Proto*   ipmux;                  /* kludge for finding an ip multiplexor */
 
        struct IP       *ip;
        struct Ipselftab        *self;
 
        struct IP       *ip;
        struct Ipselftab        *self;
@@ -359,9 +360,9 @@ struct conv*        Fsnewcall(struct conv*, uint8_t *unused_uint8_p_t, uint16_t, uint8_
 int    Fspcolstats( char *unused_char_p_t, int);
 int    Fsproto(struct Fs*, struct Proto*);
 int    Fsbuiltinproto(struct Fs*, uint8_t unused_uint8_t);
 int    Fspcolstats( char *unused_char_p_t, int);
 int    Fsproto(struct Fs*, struct Proto*);
 int    Fsbuiltinproto(struct Fs*, uint8_t unused_uint8_t);
-struct conv*   Fsprotoclone(struct proto*, char *unused_char_p_t);
-struct proto*  Fsrcvpcol(struct Fs*, uint8_t unused_uint8_t);
-struct proto*  Fsrcvpcolx(struct Fs*, uint8_t unused_uint8_t);
+struct conv*   Fsprotoclone(struct Proto*, char *unused_char_p_t);
+struct Proto*  Fsrcvpcol(struct Fs*, uint8_t unused_uint8_t);
+struct Proto*  Fsrcvpcolx(struct Fs*, uint8_t unused_uint8_t);
 char*  Fsstdconnect(struct conv*, char **unused_char_pp_t, int);
 char*  Fsstdannounce(struct conv*, char **unused_char_pp_t, int);
 char*  Fsstdbind(struct conv*, char **unused_char_pp_t, int);
 char*  Fsstdconnect(struct conv*, char **unused_char_pp_t, int);
 char*  Fsstdannounce(struct conv*, char **unused_char_pp_t, int);
 char*  Fsstdbind(struct conv*, char **unused_char_pp_t, int);
index daf829a..bd0138f 100644 (file)
@@ -1,2 +1,3 @@
 obj-y                                          += nullmedium.o
 obj-y                                          += nullmedium.o
+obj-y                                          += loopbackmedium.o
 
 
index d2509d9..e5a6766 100644 (file)
@@ -1,11 +1,17 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "../port/error.h"
-
-#include "ip.h"
+// INFERNO
+#include <vfs.h>
+#include <kfs.h>
+#include <slab.h>
+#include <kmalloc.h>
+#include <kref.h>
+#include <string.h>
+#include <stdio.h>
+#include <assert.h>
+#include <error.h>
+#include <cpio.h>
+#include <pmap.h>
+#include <smp.h>
+#include <ip.h>
 
 enum
 {
 
 enum
 {
@@ -15,22 +21,22 @@ enum
 typedef struct LB LB;
 struct LB
 {
 typedef struct LB LB;
 struct LB
 {
-       Proc    *readp;
-       Queue   *q;
-       Fs      *f;
+       struct proc     *readp;
+       struct queue    *q;
+       struct Fs       *f;
 };
 
 static void loopbackread(void *a);
 
 static void
 };
 
 static void loopbackread(void *a);
 
 static void
-loopbackbind(Ipifc *ifc, int, char**)
+loopbackbind(struct Ipifc *ifc, int unused_int, char **unused_char_pp_t)
 {
        LB *lb;
 
 {
        LB *lb;
 
-       lb = smalloc(sizeof(*lb));
+       lb = kzmalloc(sizeof(*lb), 0);
        lb->f = ifc->conv->p->f;
        /* TO DO: make queue size a function of kernel memory */
        lb->f = ifc->conv->p->f;
        /* TO DO: make queue size a function of kernel memory */
-       lb->q = qopen(128*1024, Qmsg, nil, nil);
+       lb->q = qopen(128*1024, Qmsg, NULL, NULL);
        ifc->arg = lb;
        ifc->mbps = 1000;
 
        ifc->arg = lb;
        ifc->mbps = 1000;
 
@@ -39,24 +45,26 @@ loopbackbind(Ipifc *ifc, int, char**)
 }
 
 static void
 }
 
 static void
-loopbackunbind(Ipifc *ifc)
+loopbackunbind(struct Ipifc *ifc)
 {
        LB *lb = ifc->arg;
 
 {
        LB *lb = ifc->arg;
 
-       if(lb->readp)
-               postnote(lb->readp, 1, "unbind", 0);
+       /*if(lb->readp)
+         postnote(lb->readp, 1, "unbind", 0);
+       */
 
        /* wait for reader to die */
 
        /* wait for reader to die */
-       while(lb->readp != 0)
-               tsleep(&up->sleep, return0, 0, 300);
+#warning "how to sleep 5 minutes"
+//     while(lb->readp != 0)
+//             tsleep(&current->sleep, return0, 0, 300);
 
        /* clean up */
        qfree(lb->q);
 
        /* clean up */
        qfree(lb->q);
-       free(lb);
+       kfree(lb);
 }
 
 static void
 }
 
 static void
-loopbackbwrite(Ipifc *ifc, Block *bp, int, uchar*)
+loopbackbwrite(struct Ipifc *ifc, struct block *bp, int unused_int, uint8_t *unused_uint8_p_t)
 {
        LB *lb;
 
 {
        LB *lb;
 
@@ -69,40 +77,43 @@ loopbackbwrite(Ipifc *ifc, Block *bp, int, uchar*)
 static void
 loopbackread(void *a)
 {
 static void
 loopbackread(void *a)
 {
-       Ipifc *ifc;
-       Block *bp;
+       ERRSTACK(2);
+       struct Ipifc *ifc;
+       struct block *bp;
        LB *lb;
 
        ifc = a;
        lb = ifc->arg;
        LB *lb;
 
        ifc = a;
        lb = ifc->arg;
-       lb->readp = up; /* hide identity under a rock for unbind */
+       lb->readp = current;    /* hide identity under a rock for unbind */
        if(waserror()){
                lb->readp = 0;
        if(waserror()){
                lb->readp = 0;
-               pexit("hangup", 1);
+               /* kill the proc. */
+#warning "pexit"
+//             pexit("hangup", 1);
        }
        for(;;){
                bp = qbread(lb->q, Maxtu);
        }
        for(;;){
                bp = qbread(lb->q, Maxtu);
-               if(bp == nil)
+               if(bp == NULL)
                        continue;
                ifc->in++;
                        continue;
                ifc->in++;
-               if(!canrlock(ifc)){
+               if(!canrlock(&ifc->rwlock)){
                        freeb(bp);
                        continue;
                }
                if(waserror()){
                        freeb(bp);
                        continue;
                }
                if(waserror()){
-                       runlock(ifc);
+                       runlock(&ifc->rwlock);
                        nexterror();
                }
                        nexterror();
                }
-               if(ifc->lifc == nil)
+               if(ifc->lifc == NULL)
                        freeb(bp);
                else
                        ipiput4(lb->f, ifc, bp);
                        freeb(bp);
                else
                        ipiput4(lb->f, ifc, bp);
-               runlock(ifc);
+               runlock(&ifc->rwlock);
                poperror();
        }
 }
 
                poperror();
        }
 }
 
-Medium loopbackmedium =
+struct medium loopbackmedium =
 {
 .hsize=                0,
 .mintu=                0,
 {
 .hsize=                0,
 .mintu=                0,
index f1186f2..b3cb57a 100644 (file)
@@ -14,7 +14,7 @@ typedef Fmt;
 typedef Ipifc;
 @@
 -Ipifc
 typedef Ipifc;
 @@
 -Ipifc
-+struct ipifc
++struct Ipifc
 
 @@
 typedef Iplifc;
 
 @@
 typedef Iplifc;
@@ -74,7 +74,7 @@ typedef Fraghdr6;
 typedef Fs;
 @@
 -Fs
 typedef Fs;
 @@
 -Fs
-+struct fs
++struct Fs
 
 @@
 typedef Hwaddr;
 
 @@
 typedef Hwaddr;