From b80e893edaa066af2a0c5c725c0c394e7c7c20e0 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sun, 19 Mar 2006 19:31:16 +0000 Subject: 2006-03-19 Thomas Schwinge * DEVELOPMENT: Document the FIPC removal. 2006-03-19 Leonardo Lopes Pereira Remove unused and unsuported code. Consult the file `DEVELOPMENT' for details. * ipc/fipc.c: Remove file. * ipc/fipc.h: Likewise. * Makefile.in (ipc-cfiles): Remove `fipc.c'. (ipc-files): Remove `fipc.h'. * device/device_init.c [FIPC]: Remove code. * device/net_io.c [FIPC]: Likewise. * include/mach/syscall_sw.h [FIPC]: Likewise. * kern/syscall_sw.c [FIPC]: Likewise. --- ChangeLog | 18 ++ DEVELOPMENT | 11 +- Makefile.in | 4 +- device/device_init.c | 6 - device/net_io.c | 57 ---- include/mach/syscall_sw.h | 5 - ipc/fipc.c | 795 ---------------------------------------------- ipc/fipc.h | 95 ------ kern/syscall_sw.c | 10 - 9 files changed, 28 insertions(+), 973 deletions(-) delete mode 100644 ipc/fipc.c delete mode 100644 ipc/fipc.h diff --git a/ChangeLog b/ChangeLog index b098572..6a087d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2006-03-19 Thomas Schwinge + + * DEVELOPMENT: Document the FIPC removal. + +2006-03-19 Leonardo Lopes Pereira + + Remove unused and unsuported code. Consult the file `DEVELOPMENT' + for details. + + * ipc/fipc.c: Remove file. + * ipc/fipc.h: Likewise. + * Makefile.in (ipc-cfiles): Remove `fipc.c'. + (ipc-files): Remove `fipc.h'. + * device/device_init.c [FIPC]: Remove code. + * device/net_io.c [FIPC]: Likewise. + * include/mach/syscall_sw.h [FIPC]: Likewise. + * kern/syscall_sw.c [FIPC]: Likewise. + 2006-03-15 Thomas Schwinge * configure.in: Check for strip and gzip. diff --git a/DEVELOPMENT b/DEVELOPMENT index 94e0567..ddebfda 100644 --- a/DEVELOPMENT +++ b/DEVELOPMENT @@ -3,6 +3,11 @@ `gnumach-1-branch-before_removing_unused_and_unsupported_code' was tagged on 2006-02-20. After creating that tag, code for unused and unsupported device driver for ISA cards and a good deal of i386 dependent, also -unused and unsupported code was removed. Be sure to check the ChangeLog -and have a look at the repository at that tag's state if you want to work -on the i386 dependent parts of GNU Mach. +unused and unsupported code was removed. + +On 2006-03-19, support was removed for FIPC, which only ever was used +within the native Mach NE2000 NIC device driver, see +. + +Be sure to check the ChangeLog and have a look at the repository at that +tag's state if you want to work on those parts of GNU Mach. diff --git a/Makefile.in b/Makefile.in index 2ec9968..fbe1679 100644 --- a/Makefile.in +++ b/Makefile.in @@ -106,11 +106,11 @@ device-files = blkio.c chario.c cirbuf.c cons.c dev_lookup.c dev_name.c \ # IPC implementation ipc-cfiles = $(addprefix ipc_,$(ipc-names)) \ - mach_msg.c mach_port.c mach_rpc.c mach_debug.c fipc.c + mach_msg.c mach_port.c mach_rpc.c mach_debug.c ipc-names = entry.c hash.c init.c kmsg.c marequest.c mqueue.c \ notify.c object.c port.c pset.c right.c space.c splay.c \ table.c target.c thread.c -ipc-files = $(ipc-cfiles) mach_port.srv fipc.h port.h mach_msg.h \ +ipc-files = $(ipc-cfiles) mach_port.srv port.h mach_msg.h \ $(patsubst %,ipc_%.h, \ entry hash init kmsg kmsg_queue machdep marequest mqueue notify \ object port pset right space splay table target thread types) diff --git a/device/device_init.c b/device/device_init.c index 4eef63d..292de92 100644 --- a/device/device_init.c +++ b/device/device_init.c @@ -43,9 +43,6 @@ extern void dev_lookup_init(); extern void net_io_init(); extern void device_pager_init(); extern void chario_init(void); -#ifdef FIPC -extern void fipc_init(); -#endif extern void io_done_thread(); extern void net_thread(); @@ -64,9 +61,6 @@ device_service_create() net_io_init(); device_pager_init(); chario_init(); -#ifdef FIPC - fipc_init(); -#endif (void) kernel_thread(kernel_task, io_done_thread, 0); (void) kernel_thread(kernel_task, net_thread, 0); diff --git a/device/net_io.c b/device/net_io.c index 5762c88..a98523b 100644 --- a/device/net_io.c +++ b/device/net_io.c @@ -1432,63 +1432,6 @@ net_write(ifp, start, ior) return (D_IO_QUEUED); } -#ifdef FIPC -/* This gets called by nefoutput for dev_ops->d_port_death ... */ - -io_return_t -net_fwrite(ifp, start, ior) - register struct ifnet *ifp; - int (*start)(); - io_req_t ior; -{ - spl_t s; - kern_return_t rc; - boolean_t wait; - - /* - * Reject the write if the interface is down. - */ - if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING)) - return (D_DEVICE_DOWN); - - /* - * Reject the write if the packet is too large or too small. - */ - if (ior->io_count < ifp->if_header_size || - ior->io_count > ifp->if_header_size + ifp->if_mtu) - return (D_INVALID_SIZE); - - /* - * DON'T Wire down the memory. - */ -#if 0 - rc = device_write_get(ior, &wait); - if (rc != KERN_SUCCESS) - return (rc); -#endif - /* - * Network interfaces can't cope with VM continuations. - * If wait is set, just panic. - */ - /* I'll have to figure out who was setting wait...*/ -#if 0 - if (wait) { - panic("net_write: VM continuation"); - } -#endif - /* - * Queue the packet on the output queue, and - * start the device. - */ - s = splimp(); - IF_ENQUEUE(&ifp->if_snd, ior); - (*start)(ifp->if_unit); - splx(s); - - return (D_IO_QUEUED); -} -#endif /* FIPC */ - /* * Initialize the whole package. */ diff --git a/include/mach/syscall_sw.h b/include/mach/syscall_sw.h index 03527a5..df5515c 100644 --- a/include/mach/syscall_sw.h +++ b/include/mach/syscall_sw.h @@ -132,9 +132,4 @@ kernel_trap(host_self,-55,0) #endif /* MACH_IPC_COMPAT */ -#ifdef FIPC -kernel_trap(fipc_send,-96,4) -kernel_trap(fipc_recv,-97,5) -#endif - #endif /* _MACH_SYSCALL_SW_H_ */ diff --git a/ipc/fipc.c b/ipc/fipc.c deleted file mode 100644 index ebab640..0000000 --- a/ipc/fipc.c +++ /dev/null @@ -1,795 +0,0 @@ -/* - * Copyright (c) 1996-1994 The University of Utah and - * the Computer Systems Laboratory (CSL). All rights reserved. - * - * Permission to use, copy, modify and distribute this software is hereby - * granted provided that (1) source code retains these copyright, permission, - * and disclaimer notices, and (2) redistributions including binaries - * reproduce the notices in supporting documentation, and (3) all advertising - * materials mentioning features or use of this software display the following - * acknowledgement: ``This product includes software developed by the - * Computer Systems Laboratory at the University of Utah.'' - * - * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS - * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF - * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * CSL requests users of this software to return to csl-dist@cs.utah.edu any - * improvements that they make and grant CSL redistribution rights. - * - * Utah $Hdr: fipc.c 1.1 96/2/29$ - * Author: Linus Kamb - */ - -#ifdef FIPC - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "fipc.h" - -void fipc_packet(); -void allocate_fipc_buffers(boolean_t); -int fipc_lookup(unsigned short port); -int fipc_lookup_table_enter(unsigned short port); -int fipc_lookup_table_remove(unsigned short port); -int f_lookup_hash(unsigned short port); -int fipc_done(io_req_t ior); - - -/********************************************************************/ -/* fipc variables -/********************************************************************/ - -fipc_port_t fports[N_MAX_OPEN_FIPC_PORTS]; -fipc_lookup_table_ent fipc_lookup_table[N_MAX_OPEN_FIPC_PORTS]; - -int n_free_recv_bufs = 0; -int n_free_send_bufs = 0; -int n_fipc_recv_ports_used = 0; - -int fipc_sends = 0; -int fipc_recvs =0; - -fipc_stat_t fipc_stats; - -char *fipc_recv_free_list = NULL; -char *fipc_recv_free_list_tail = NULL; -char *fipc_send_free_list = NULL; -char *fipc_send_free_list_tail = NULL; - -/* fipc locks */ -decl_simple_lock_data(, fipc_lock); -decl_simple_lock_data(, fipc_buf_q_lock); - - -/* - * Routine: fipc_init(): initializes the fipc data structures. - */ - -void fipc_init(void) -{ - int i; - - allocate_fipc_buffers(TRUE); /* recv buffers */ - allocate_fipc_buffers(FALSE); /* send buffers */ - - fipc_stats.dropped_msgs = 0; - - bzero (&fports, sizeof(fports)); - for (i=0; i MAX_FIPC_PORT_NUM) - return INVALID; - - while (fipc_lookup_table[chk].fipc_port != port && - fipc_lookup_table[chk].fpt_num != INVALID && - bail < N_MAX_OPEN_FIPC_PORTS) - { - chk = (chk+1) % N_MAX_OPEN_FIPC_PORTS; - bail++; - } - - /* This is redundent, but better safe then sorry */ - if (baildest_port; - int from_port = ((fipc_header_t*)msg_buf)->send_port; - int f_tbl_num; - fipc_port_t *cfp; - fipc_buffer_q_ent *crqe; - int *tail; - -#ifdef FI_DEBUG - printf ("fipc_packet :(0x%x) %s", msg_buf, - msg_buf+sizeof(fipc_header_t)); -#endif - - f_tbl_num = fipc_lookup(to_port); - if (f_tbl_num == INVALID) - { -#ifdef FI_DEBUG - printf ("Lookup failed.\n"); -#endif - fipc_stats.dropped_msgs += 1; - return_fipc_buffer (msg_buf, FIPC_BUFFER_SIZE, TRUE, TRUE); - return; - } - - cfp = &fports[f_tbl_num]; - tail = &cfp->rq_tail; - crqe = &cfp->recv_q[*tail]; - - if (cfp->valid_msg == FIPC_RECV_Q_SIZE) - { - /* Queue full. - * Drop packet, return buffer, and return. */ -#ifdef FI_DEBUG - printf ("Port %d queue is full: valid_msg count: %d\n", - to_port, cfp->valid_msg); -#endif - fipc_stats.dropped_msgs += 1; - return_fipc_buffer (msg_buf, FIPC_BUFFER_SIZE, TRUE, TRUE); - return; - } - - /* "enqueue" at "tail" */ - crqe->buffer = msg_buf; - crqe->size = ((fipc_header_t*)msg_buf)->msg_size; - /* This could certainly be done faster... */ - bcopy(&(sender.ether_shost), &(crqe->sender.hwaddr), ETHER_HWADDR_SIZE); - /* This is actually useless, since there _is_ no sender port.. duh. */ - crqe->sender.port = from_port; - - *tail = ((*tail)+1) % FIPC_RECV_Q_SIZE; - - if (cfp->bound) - thread_wakeup(&(cfp->valid_msg)); - cfp->valid_msg++; -#ifdef FI_DEBUG - printf ("valid_msg: %d\n", cfp->valid_msg); -#endif - - return; - } - - -/* - * loopback(): for fipc_sends to the local host. - */ - -inline -kern_return_t loopback(char *packet) -{ - fipc_packet(packet+sizeof(struct ether_header), - *(struct ether_header*)packet); - return KERN_SUCCESS; -} - - -/********************************************************************/ -/* Routine: fipc_send -/********************************************************************/ - -kern_return_t syscall_fipc_send(fipc_endpoint_t dest, - char *user_buffer, int len) -{ -#ifdef i386 - static mach_device_t eth_device = 0; -#else - static device_t eth_device = 0; -#endif - static unsigned char hwaddr[ETHER_HWADDR_SIZE+2]; - - io_return_t rc; - kern_return_t open_res, kr; - dev_mode_t mode = D_WRITE; - /* register */ io_req_t ior = NULL; - struct ether_header *ehdr; - fipc_header_t *fhdr; - int *d_addr; - int data_count; - char *fipc_buf, *data_buffer; -#ifdef FIPC_LOOPBACK - boolean_t local_send = FALSE; -#endif - -#ifdef FI_DEBUG - printf("fipc_send(dest: %s, port:%d, len:%d, buf:x%x) !!!\n", - ether_sprintf(dest.hwaddr), dest.port, len, user_buffer); -#endif - - if (dest.port > MAX_FIPC_PORT_NUM || - len > FIPC_MSG_SIZE) - { -#ifdef FI_DEBUG - printf ("len: %d, dest.port: %u\n", len, dest.port); -#endif - return KERN_INVALID_ARGUMENT; - } - - /* We should only need to probe the device once. */ - - if (!eth_device) - { - unsigned char net_hwaddr[ETHER_HWADDR_SIZE+2]; - int stat_count = sizeof(net_hwaddr)/sizeof(int); - - /* XXX Automatic lookup for ne0 or ne1 was failing... */ - eth_device = device_lookup(ETHER_DEVICE_NAME); -#ifdef i386 - if (eth_device == (mach_device_t) DEVICE_NULL || - eth_device == (mach_device_t)D_NO_SUCH_DEVICE) -#else - if (eth_device == DEVICE_NULL || - eth_device == (device_t)D_NO_SUCH_DEVICE) -#endif - { -#ifdef FI_DEBUG - printf ("FIPC: Couldn't find ethernet device %s.\n", - ETHER_DEVICE_NAME); -#endif - return (KERN_FAILURE); - } - - /* The device should be open! */ - if (eth_device->state != DEV_STATE_OPEN) - { -#ifdef FI_DEBUG - printf ("Opening ethernet device.\n"); -#endif - - io_req_alloc (ior, 0); - - io_req_alloc (ior, 0); - - ior->io_device = eth_device; - ior->io_unit = eth_device->dev_number; - ior->io_op = IO_OPEN | IO_CALL; - ior->io_mode = mode; - ior->io_error = 0; - ior->io_done = 0; - ior->io_reply_port = MACH_PORT_NULL; - ior->io_reply_port_type = 0; - - /* open the device */ - open_res = - (*eth_device->dev_ops->d_open) - (eth_device->dev_number, - (int)mode, ior); - if (ior->io_error != D_SUCCESS) - { -#ifdef FI_DEBUG - printf ("Failed to open device ne0\n"); -#endif - return open_res; - } - } -#ifdef i386 - rc = mach_device_get_status(eth_device, NET_ADDRESS, - net_hwaddr, &stat_count); -#else - rc = ds_device_get_status(eth_device, NET_ADDRESS, net_hwaddr, - &stat_count); -#endif - if (rc != D_SUCCESS) - { -#ifdef FI_DEBUG - printf("FIPC: Couldn't determine hardware ethernet address: %d\n", - rc); -#endif - return KERN_FAILURE; - } - *(int*)hwaddr = ntohl(*(int*)net_hwaddr); - *(int*)(hwaddr+4) = ntohl(*(int*)(net_hwaddr+4)); -#ifdef FI_DEBUG - printf ("host: %s\n", ether_sprintf(hwaddr)); -#endif - } - -#ifdef FIPC_LOOPBACK - if (!memcmp(dest.hwaddr, hwaddr, ETHER_HWADDR_SIZE)) -/* - if ((*(int*)dest.hwaddr == *(int*)hwaddr) && - ((*(int*)(((char*)dest.hwaddr+4) >> 16)) == - ((*(int*)(((char*)hwaddr+4) >> 16))))) -*/ - { - local_send = TRUE; -#ifdef FI_DEBUG - printf ("loopback: \n"); - printf ("host: %s, ", ether_sprintf(hwaddr)); - printf ("dest: %s\n", ether_sprintf(dest.hwaddr)); -#endif - } -#endif - - data_count = len + sizeof (struct ether_header) - + sizeof (fipc_header_t); - -#ifdef FIPC_LOOPBACK - fipc_buf = get_fipc_buffer(data_count, local_send, FALSE) ; -#else - fipc_buf = get_fipc_buffer(data_count, FALSE, FALSE) ; -#endif - - if (fipc_buf == NULL) - return KERN_RESOURCE_SHORTAGE; - - ehdr = (struct ether_header *)fipc_buf; - d_addr = (int *)ehdr->ether_dhost; - - *(int *)ehdr->ether_dhost = *(int*)dest.hwaddr; - *(int *)(ehdr->ether_dhost+4) = *(int*)(dest.hwaddr+4); - *(int *)ehdr->ether_shost = *(int *)hwaddr; - *(int *)(ehdr->ether_shost+4) = *(int *)(hwaddr+4); - ehdr->ether_type = 0x1234; /* Yep. */ - -#ifdef FIPC_LOOPBACK - if (!local_send) - { -#endif - if (!ior) - io_req_alloc (ior, 0); - - /* Set up the device information. */ - ior->io_device = eth_device; - ior->io_unit = eth_device->dev_number; - ior->io_op = IO_WRITE | IO_INBAND | IO_INTERNAL; - ior->io_mode = D_WRITE; - ior->io_recnum = 0; - ior->io_data = fipc_buf; - ior->io_count = data_count; - ior->io_total = data_count; - ior->io_alloc_size = 0; - ior->io_residual = 0; - ior->io_error = 0; - ior->io_done = fipc_done; - ior->io_reply_port = MACH_PORT_NULL; - ior->io_reply_port_type = 0; - ior->io_copy = VM_MAP_COPY_NULL; -#ifdef FIPC_LOOPBACK - } -#endif - -#ifdef FI_DEBUG - printf("sending from %s ", ether_sprintf(ehdr->ether_shost)); - printf("to %s, type x%x, user_port x%x\n", - ether_sprintf(ehdr->ether_dhost), - (int)ehdr->ether_type, - (int)dest.port); -#endif - - if (len <= FIPC_MSG_SIZE) - { - fhdr = (fipc_header_t*)(fipc_buf+sizeof(struct ether_header)); - fhdr->dest_port = dest.port; - fhdr->msg_size = len; - data_buffer = (char*)fhdr+sizeof(fipc_header_t); - - copyin (user_buffer, data_buffer, - min (FIPC_BUFFER_SIZE-sizeof(fipc_header_t), len)); - -#ifdef FIPC_LOOPBACK - /* - * Sending to same node. Queue on dest.port of this node. - * We just call fipc_packet after setting up the necessary info - * and return. fipc_packet queues the packet on the receive - * queue for the destination port. - */ - if (local_send) - return (loopback(fipc_buf)); -#endif - - /* Now write to the device */ - /* d_port_death has been co-opted for fipc stuff. - * It maps to nefoutput(). */ - - rc = (*eth_device->dev_ops->d_port_death) /* that's the one */ - (eth_device->dev_number, ior); - } -#ifdef FI_DEBUG - else /* len > ETHERMTU: multi-packet request */ - printf ("### multi-packet messages are not supported.\n"); -#endif - - if (rc == D_IO_QUEUED) - return KERN_SUCCESS; - else - return KERN_FAILURE; -} - -#ifdef FIPC_LOOPBACK - if (!local_send) - { -#endif - if (!ior) - io_req_alloc (ior, 0); - - /* Set up the device information. */ - ior->io_device = eth_device; - ior->io_unit = eth_device->dev_number; - ior->io_op = IO_WRITE | IO_INBAND | IO_INTERNAL; - ior->io_mode = D_WRITE; - ior->io_recnum = 0; - ior->io_data = fipc_buf; - ior->io_count = data_count; - ior->io_total = data_count; - ior->io_alloc_size = 0; - ior->io_residual = 0; - ior->io_error = 0; - ior->io_done = fipc_done; - ior->io_reply_port = MACH_PORT_NULL; - ior->io_reply_port_type = 0; - ior->io_copy = VM_MAP_COPY_NULL; -#ifdef FIPC_LOOPBACK - } -#endif - -/******************************************************************** -/* syscall_fipc_recv() -/* -/********************************************************************/ - -kern_return_t syscall_fipc_recv(unsigned short user_port, - char *user_buffer, int *user_size, fipc_endpoint_t *user_sender) -{ - char* f_buffer; - fipc_port_t *cfp; - fipc_buffer_q_ent *crqe; - int *head; - int msg_size; - int fport_num = fipc_lookup(user_port); - spl_t spl; - -#ifdef FI_DEBUG - printf("fipc_recv(0x%x, 0x%x) !!!\n", user_port, user_buffer); -#endif - - if (user_port > MAX_FIPC_PORT_NUM) - { -#ifdef FI_DEBUG - printf ("Invalid FIPC port: %u\n", user_port); -#endif - return KERN_INVALID_ARGUMENT; - } - - if (fport_num == INVALID) - return KERN_RESOURCE_SHORTAGE; - - cfp = &fports[fport_num]; - head = &cfp->rq_head; - crqe = &cfp->recv_q[*head]; - - if (cfp->bound != FALSE) - { -#ifdef FI_DEBUG - printf ("FIPC Port %u is currently bound.\n", user_port); -#endif - return KERN_RESOURCE_SHORTAGE; - } - - copyin(user_size, &msg_size, sizeof(int)); - - spl = splimp(); - - cfp->bound = TRUE; - while (!(cfp->valid_msg)) - { - assert_wait(&(cfp->valid_msg), TRUE); - splx(spl); - thread_block ((void(*)())0); - if (current_thread()->wait_result != THREAD_AWAKENED) - { - cfp->bound = FALSE; - return KERN_FAILURE; - } - spl = splimp(); - } - - cfp->valid_msg--; - f_buffer = crqe->buffer; - msg_size = min (crqe->size, msg_size); - - crqe->buffer = NULL; - crqe->size = 0; - *head = ((*head)+1) % FIPC_RECV_Q_SIZE; - cfp->bound = FALSE; - - splx(spl); - - copyout(f_buffer+sizeof(fipc_header_t), user_buffer, msg_size); - copyout(&(crqe->sender), user_sender, sizeof(fipc_endpoint_t)); - copyout(&msg_size, user_size, sizeof(msg_size)); - - return_fipc_buffer(f_buffer, FIPC_BUFFER_SIZE, TRUE, FALSE); - - return KERN_SUCCESS; -} - - -/* - * Final clean-up after the packet has been sent off. - */ -int fipc_done(io_req_t ior) -{ - return_fipc_buffer(ior->io_data, FIPC_BUFFER_SIZE, FALSE, FALSE); - - return 1; -} - -#endif /* FIPC */ diff --git a/ipc/fipc.h b/ipc/fipc.h deleted file mode 100644 index 2b545c4..0000000 --- a/ipc/fipc.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 1996-1994 The University of Utah and - * the Computer Systems Laboratory (CSL). All rights reserved. - * - * Permission to use, copy, modify and distribute this software is hereby - * granted provided that (1) source code retains these copyright, permission, - * and disclaimer notices, and (2) redistributions including binaries - * reproduce the notices in supporting documentation, and (3) all advertising - * materials mentioning features or use of this software display the following - * acknowledgement: ``This product includes software developed by the - * Computer Systems Laboratory at the University of Utah.'' - * - * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS - * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF - * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * CSL requests users of this software to return to csl-dist@cs.utah.edu any - * improvements that they make and grant CSL redistribution rights. - * - * Utah $Hdr: fipc.h 1.1 96/2/29$ - * Author: Linus Kamb - */ - -#include -#include - - -#define N_MAX_OPEN_FIPC_PORTS 32 /* In practice, - * this should be much larger */ -#define MAX_FIPC_PORT_NUM 4095 /* ditto */ - -#define FIPC_MSG_TYPE 0x1234 - -#define FIPC_BUFFER_SIZE ETHERMTU -#define FIPC_MSG_SIZE (FIPC_BUFFER_SIZE - sizeof(fipc_header_t)) - -#define FIPC_RECV_Q_SIZE 4 -#define N_MIN_RECV_BUFS 5 /* 2 pages worth */ -#define N_MAX_RECV_BUFS (N_MAX_OPEN_FIPC_PORTS * FIPC_RECV_Q_SIZE) -#define N_MIN_SEND_BUFS 2 -#define N_MAX_SEND_BUFS 5 - -#define INVALID -1 - -#define ETHER_HWADDR_SIZE 6 -#define ETHER_DEVICE_NAME "ne0" - -typedef struct fipc_endpoint_structure -{ - unsigned char hwaddr[ETHER_HWADDR_SIZE]; - unsigned short port; -} fipc_endpoint_t; - -typedef struct fipc_buffer_structure -{ - char *buffer; - unsigned short size; - fipc_endpoint_t sender; -} fipc_buffer_q_ent; - -typedef struct fipc_port_structure -{ - simple_lock_data_t lock; - boolean_t bound; - int valid_msg; - fipc_buffer_q_ent recv_q[FIPC_RECV_Q_SIZE]; - int rq_head, rq_tail; -} fipc_port_t; - -typedef struct fipc_header_structure -{ - unsigned short dest_port; - unsigned short send_port; - unsigned int msg_size; -} fipc_header_t; - -typedef struct fipc_lookup_table_ent_structure -{ - int fipc_port; - int fpt_num; /* f_ports[] entry number */ -} fipc_lookup_table_ent; - -typedef struct fipc_stat_structure -{ - int dropped_msgs; -} fipc_stat_t; - -#define min(a,b) (((a)<=(b)?(a):(b))) - -char* get_fipc_buffer(int, boolean_t, boolean_t); -void fipc_packet(char*, struct ether_header); - -extern int fipc_sends; -extern int fipc_recvs; - diff --git a/kern/syscall_sw.c b/kern/syscall_sw.c index e922b5f..64a5d0d 100644 --- a/kern/syscall_sw.c +++ b/kern/syscall_sw.c @@ -91,11 +91,6 @@ extern kern_return_t evc_wait_clear(); extern kern_return_t syscall_device_write_request(); extern kern_return_t syscall_device_writev_request(); -#ifdef FIPC -extern kern_return_t syscall_fipc_send(); -extern kern_return_t syscall_fipc_recv(); -#endif /* FIPC */ - mach_trap_t mach_trap_table[] = { MACH_TRAP(kern_invalid, 0), /* 0 */ /* Unix */ MACH_TRAP(kern_invalid, 0), /* 1 */ /* Unix */ @@ -220,13 +215,8 @@ mach_trap_t mach_trap_table[] = { MACH_TRAP(kern_invalid, 0), /* 94 */ MACH_TRAP(kern_invalid, 0), /* 95 */ -#ifdef FIPC - MACH_TRAP(syscall_fipc_send, 4), /* 96 */ - MACH_TRAP(syscall_fipc_recv, 5), /* 97 */ -#else MACH_TRAP(kern_invalid, 0), /* 96 */ MACH_TRAP(kern_invalid, 0), /* 97 */ -#endif /* FIPC */ MACH_TRAP(kern_invalid, 0), /* 98 */ MACH_TRAP(kern_invalid, 0), /* 99 */ -- cgit v1.2.3