Changeset fa8e7d2 in mainline for kernel/generic/include/ipc/ipc.h


Ignore:
Timestamp:
2007-01-30T12:51:03Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
80bcaed
Parents:
b612ded6
Message:

move ipc structures to ipc.h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/ipc/ipc.h

    rb612ded6 rfa8e7d2  
    159159#ifdef KERNEL
    160160
    161 #include <proc/task.h>
     161#define IPC_MAX_PHONES  16
     162
     163#include <synch/waitq.h>
     164
     165struct answerbox;
     166struct task;
     167
     168typedef enum {
     169        IPC_PHONE_FREE = 0,     /**< Phone is free and can be allocated */
     170        IPC_PHONE_CONNECTING,   /**< Phone is connecting somewhere */
     171        IPC_PHONE_CONNECTED,    /**< Phone is connected */
     172        IPC_PHONE_HUNGUP,       /**< Phone is hung up, waiting for answers to come */
     173        IPC_PHONE_SLAMMED       /**< Phone was hungup from server */
     174} ipc_phone_state_t;
     175
     176/** Structure identifying phone (in TASK structure) */
     177typedef struct {
     178        SPINLOCK_DECLARE(lock);
     179        link_t link;
     180        struct answerbox *callee;
     181        ipc_phone_state_t state;
     182        atomic_t active_calls;
     183} phone_t;
     184
     185typedef struct answerbox {
     186        SPINLOCK_DECLARE(lock);
     187
     188        struct task *task;
     189
     190        waitq_t wq;
     191
     192        link_t connected_phones;        /**< Phones connected to this answerbox */
     193        link_t calls;                   /**< Received calls */
     194        link_t dispatched_calls;        /* Should be hash table in the future */
     195
     196        link_t answers;                 /**< Answered calls */
     197
     198        SPINLOCK_DECLARE(irq_lock);
     199        link_t irq_notifs;              /**< Notifications from IRQ handlers */
     200        link_t irq_head;                /**< IRQs with notifications to this answerbox. */
     201} answerbox_t;
    162202
    163203typedef struct {
     
    172212
    173213        /* Identification of the caller */
    174         task_t *sender;
     214        struct task *sender;
    175215        /* The caller box is different from sender->answerbox
    176216         * for synchronous calls
Note: See TracChangeset for help on using the changeset viewer.