Annotation of OSKit-Mach/ipc/fipc.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1996-1994 The University of Utah and
                      3:  * the Computer Systems Laboratory (CSL).  All rights reserved.
                      4:  *
                      5:  * Permission to use, copy, modify and distribute this software is hereby
                      6:  * granted provided that (1) source code retains these copyright, permission,
                      7:  * and disclaimer notices, and (2) redistributions including binaries
                      8:  * reproduce the notices in supporting documentation, and (3) all advertising
                      9:  * materials mentioning features or use of this software display the following
                     10:  * acknowledgement: ``This product includes software developed by the
                     11:  * Computer Systems Laboratory at the University of Utah.''
                     12:  *
                     13:  * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
                     14:  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
                     15:  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     16:  *
                     17:  * CSL requests users of this software to return to [email protected] any
                     18:  * improvements that they make and grant CSL redistribution rights.
                     19:  *
                     20:  *  Utah $Hdr: fipc.h 1.1 96/2/29$
                     21:  *  Author: Linus Kamb
                     22:  */
                     23: 
                     24: #include <kern/lock.h>
                     25: #include <device/if_ether.h>
                     26: 
                     27: 
                     28: #define N_MAX_OPEN_FIPC_PORTS  32      /* In practice, 
                     29:                                      * this should be much larger */
                     30: #define MAX_FIPC_PORT_NUM              4095    /* ditto */
                     31: 
                     32: #define FIPC_MSG_TYPE                  0x1234
                     33: 
                     34: #define FIPC_BUFFER_SIZE               ETHERMTU
                     35: #define FIPC_MSG_SIZE                  (FIPC_BUFFER_SIZE - sizeof(fipc_header_t))
                     36: 
                     37: #define FIPC_RECV_Q_SIZE               4
                     38: #define N_MIN_RECV_BUFS                        5       /* 2 pages worth */
                     39: #define N_MAX_RECV_BUFS                        (N_MAX_OPEN_FIPC_PORTS * FIPC_RECV_Q_SIZE)
                     40: #define N_MIN_SEND_BUFS                        2
                     41: #define N_MAX_SEND_BUFS                        5
                     42: 
                     43: #define INVALID                                        -1
                     44: 
                     45: #define ETHER_HWADDR_SIZE              6
                     46: #define ETHER_DEVICE_NAME              "ne0"
                     47: 
                     48: typedef struct fipc_endpoint_structure
                     49: {
                     50:        unsigned char hwaddr[ETHER_HWADDR_SIZE];
                     51:        unsigned short port;
                     52: } fipc_endpoint_t;
                     53: 
                     54: typedef struct fipc_buffer_structure
                     55: {
                     56:        char *buffer;
                     57:        unsigned short size;
                     58:        fipc_endpoint_t sender;
                     59: } fipc_buffer_q_ent;
                     60: 
                     61: typedef struct fipc_port_structure
                     62: {
                     63:        simple_lock_data_t lock;
                     64:        boolean_t bound;
                     65:        int valid_msg;
                     66:        fipc_buffer_q_ent recv_q[FIPC_RECV_Q_SIZE];
                     67:        int rq_head, rq_tail;
                     68: } fipc_port_t;
                     69: 
                     70: typedef struct fipc_header_structure
                     71: {
                     72:        unsigned short dest_port;
                     73:        unsigned short send_port;
                     74:        unsigned int msg_size;
                     75: } fipc_header_t;
                     76: 
                     77: typedef struct fipc_lookup_table_ent_structure
                     78: {
                     79:        int fipc_port;
                     80:        int fpt_num;    /* f_ports[] entry number */
                     81: } fipc_lookup_table_ent;
                     82: 
                     83: typedef struct fipc_stat_structure
                     84: {
                     85:        int dropped_msgs;
                     86: } fipc_stat_t;
                     87: 
                     88: #define min(a,b)       (((a)<=(b)?(a):(b)))
                     89: 
                     90: char* get_fipc_buffer(int, boolean_t, boolean_t);
                     91: void fipc_packet(char*, struct ether_header);
                     92: 
                     93: extern int fipc_sends;
                     94: extern int fipc_recvs;
                     95: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.