Moves socket semaphore stuff
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 9 Oct 2013 03:50:09 +0000 (20:50 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jan 2014 02:23:22 +0000 (18:23 -0800)
If we end up using the sockets, we should integrate the fd->whatever
lookup differently.

kern/include/kthread.h
kern/include/socket.h

index a25fd97..4dd86c7 100644 (file)
 struct proc;
 struct kthread;
 struct semaphore;
-struct semaphore_entry;
 TAILQ_HEAD(kthread_tailq, kthread);
-LIST_HEAD(semaphore_list, semaphore_entry);
-
 
 /* This captures the essence of a kernel context that we want to suspend.  When
  * a kthread is running, we make sure its stacktop is the default kernel stack,
@@ -53,13 +50,6 @@ struct cond_var {
        bool                                            irq_okay;
 };
 
-/* TODO: consider building this into struct semaphore */
-struct semaphore_entry {
-       struct semaphore sem;
-       int fd;
-       LIST_ENTRY(semaphore_entry) link;
-};
-
 uintptr_t get_kstack(void);
 void put_kstack(uintptr_t stacktop);
 uintptr_t *kstack_bottom_addr(uintptr_t stacktop);
index 89dacb7..f412d5d 100644 (file)
@@ -35,6 +35,8 @@
 struct socket;
 struct proc;
 STAILQ_HEAD(socket_tailq, socket);
+struct semaphore_entry;
+LIST_HEAD(sock_semaphore_list, semaphore_entry);
 
 // These are probably defined elsewhere too..
 #ifndef socklen_t
@@ -52,6 +54,13 @@ enum sock_type {
     SOCK_PACKET = 10,
 };
 
+/* TODO: consider building this into struct semaphore */
+struct semaphore_entry {
+       struct semaphore sem;
+       int fd;
+       LIST_ENTRY(semaphore_entry) link;
+};
+
 struct socket{
   //int so_count;       /* (b) reference count */
   short   so_type;        /* (a) generic type, see socket.h */
@@ -67,7 +76,7 @@ struct socket{
        struct semaphore sem;
        struct semaphore accept_sem;
        spinlock_t waiter_lock;
-       struct semaphore_list waiters;   /* semaphone to for a process to sleep on */
+       struct sock_semaphore_list waiters; /* sem for a process to sleep on */
        struct socket_tailq acceptq;
        STAILQ_ENTRY(socket) next;
        //struct  vnet *so_vnet;      /* network stack instance */