Xref: utzoo unix-pc.sources:362 comp.sys.att:7290 Path: utzoo!attcan!uunet!tut.cis.ohio-state.edu!mailrus!rutgers!mit-eddie!bu-cs!att!dptg!holin!bes From: bes@holin.ATT.COM (Bradley Smith) Newsgroups: unix-pc.sources,comp.sys.att Subject: uipc.p2 Message-ID: <649@holin.ATT.COM> Date: 12 Aug 89 16:36:41 GMT Distribution: unix-pc Organization: AT&T Bell Labs, OIL, Holmdel, NJ Lines: 1743 : This is a shar archive. Extract with sh, not csh. : This archive ends with exit, so do not worry about trailing junk. if test -f 'uipc' then rm 'uipc' fi if test -d 'uipc' then : else echo 'Making uipc/' mkdir 'uipc' fi chmod 'u=rwx,g=rx,o=rx' 'uipc' echo 'Extracting uipc/conf.h' sed 's/^X//' > uipc/conf.h << '+ END-OF-FILE uipc/conf.h' X/* X * @(#)conf.h 1.1 (Alex Crain) 6/20/89 X * X * conf.h - 3b1 specifics for the uipc driver. X * X * (C) Copyright 1989 Alex Crain X * X */ X X#ifndef _conf_h_ X#define _conf_h_ X X/* X * Useful spls. X */ X X#define splimp spl7 X#define splnet spl5 X X/* X * Useful macros X */ X X#define MIN(x, y) ((x) < (y) ? (x) : (y)) X#define MAX(x, y) ((x) > (y) ? (x) : (y)) X X/* X * stdata is a pointer to a streams structure, and is referenced in X * sys/inode.h. We rename it here and use it for a socket pointer. X */ X X#define stdata socket X#define i_sptr i_socket X X/* X * I never understood why at&t doesn't offer a complete set of these. X * ushort and uint are found in types.h, but uchar() is a kernel function, X * so we invent a complete set from scratch. X */ X Xtypedef unsigned long u_long; Xtypedef unsigned int u_int; Xtypedef unsigned short u_short; Xtypedef unsigned char u_char; X X/* X * The number of available mbufs X */ X X#define NMBUF 512 X X/* X * New signals. The signal numbers are not the same as BSD. X */ X X#define SIGURG 22 X#define SIGIO 23 X X/* X * New flags for (struct file *)->i_flag X */ X X#define FMARK 00040 X#define FDEFER 00100 X X/* X * Flags for iomove (addr, len, flag) X */ X X#define IO_WRITE 0 /* u.u_base -> addr */ X#define IO_READ 1 /* addr -> u.u_base */ X X/* X * Flags for useracc (addr, len, flag) X */ X X#define UACC_READ 0 X#define UACC_WRITE 1 X X/* X * define the relationship between file structures and sockets X */ X X#define filesock(FP) mtod (ptom ((FP)->f_offset), struct socket *) X#define sockoffset(SO) mtop (dtom (SO), off_t) X X#endif /* _conf_h_ */ + END-OF-FILE uipc/conf.h chmod 'u=rw,g=rw,o=rw' 'uipc/conf.h' echo ' -rw-rw-rw- 1 bes HSJ 1561 Jul 18 23:44 uipc/conf.h (as sent)' echo ' \c' /bin/ls -l uipc/conf.h echo 'Extracting uipc/domain.h' sed 's/^X//' > uipc/domain.h << '+ END-OF-FILE uipc/domain.h' X/* X * @(#)domain.h 1.1 (Alex Crain) 6/20/89 X * X * domain.h - domain stucture definitions. X * X * Written by Alex Crain. X * X * This file is based in the Berkeley header file of the same X * name, but is *not* guarenteed to be in any way compatable. It is X * close enough to the berkeley code that the following applies... X * X * Copyright (c) 1982, 1986, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that this notice is preserved and that due credit is given X * to the University of California at Berkeley. The name of the University X * may not be used to endorse or promote products derived from this X * software without specific prior written permission. This software X * is provided "as is" without express or implied warranty. X * X */ X X#ifndef _domain_h_ X#define _domain_h_ X X#include X Xstruct domain { X int dom_family; X char * dom_name; X int (* dom_init) (); X int (* dom_externalize) (); X int (* dom_dispose) (); X struct protosw * dom_protosw, * dom_protoswNPROTOSW; X struct domain * dom_next; X}; X X#ifdef KERNEL Xstruct domain * domains; X#endif X X#endif _domain_h_ + END-OF-FILE uipc/domain.h chmod 'u=rw,g=rw,o=rw' 'uipc/domain.h' echo ' -rw-rw-rw- 1 bes HSJ 1217 Jul 18 23:44 uipc/domain.h (as sent)' echo ' \c' /bin/ls -l uipc/domain.h echo 'Extracting uipc/fproto.h' sed 's/^X//' > uipc/fproto.h << '+ END-OF-FILE uipc/fproto.h' X/* X * @(#)fproto.h 1.1 (Alex Crain) 6/20/89 X * X * fproto.h - function prototypes for uipc driver. X * X * Written by Alex Crain. X * X * This file contains ANSI function prototypes for the entire uipc X * package and many of the existing system entry points. The prototypes X * are blocked within a "#ifdef __STDC__" construct, the with an alternate X * "#else" block of old-style function declarations. X */ X X#ifndef _fproto_h_ X#define _fproto_h_ X X#ifdef __STDC__ X/* X * Declarations from debug.c X */ X Xvoid dump_mbuf (struct mbuf *m, char *func); X X/* X * Declarations from domain.c X */ X Xvoid domaininit (void); Xstruct protosw *pffindtype (int family, int type); Xstruct protosw *pffindproto (int family, int protocol, int type); X X/* X * Declarations from interface.c X */ X Xvoid uipcinit (void); Xvoid dosyscall(void); Xint uipcrelease (void); Xvoid uipc_write (void); Xvoid uipc_read (void); Xvoid uipc_close (off_t sp); Xvoid bzero (char *s, int n); Xint ufavail (void); X X/* X * Declarations from mbuf.c X */ X Xvoid mbinit(void); Xstruct mbuf *m_get (int canwait, int type); Xstruct mbuf *m_getclr (int canwait, int type); Xstruct mbuf *m_free (struct mbuf *m); Xstruct mbuf *m_more (int canwait, int type); Xvoid m_freem (struct mbuf *m); Xstruct mbuf *m_copy (struct mbuf *m, int off, int len); X X/* X * Declarations from socket.c X */ X Xint socreate (int domain, struct socket ** sop, int type, int proto); Xint sobind (struct socket *so, struct mbuf *nam); Xint solisten (struct socket *so, int backlog); Xvoid sofree (struct socket *so); Xint soclose (struct socket *so); Xint soabort (struct socket *so); Xint soaccept (struct socket *so, struct mbuf *nam); Xint soconnect (struct socket *so, struct mbuf *nam); Xint soconnect2 (struct socket *so1, struct socket *so2); Xint sodisconnect (struct socket *so); Xint sosend (struct socket *so, struct mbuf *nam, int flags, struct mbuf *rights); Xint soreceive (struct socket *so, struct mbuf **nam, int flags, struct mbuf **rights); Xvoid sorflush (struct socket *so); Xint sosetopt (struct socket *so, int level, int optname, struct mbuf *m0); Xint sogetopt (struct socket *so, int level, int optname, struct mbuf **mp); Xvoid sohasoutofband (struct socket *so); X X/* X * Declarations from socket2.c X */ X X Xvoid soisconnecting (struct socket *so); Xvoid soisconnected (struct socket *so); Xvoid soisdisconnecting (struct socket *so); Xvoid soisdisconnected (struct socket *so); Xstruct socket *sonewconn (struct socket *head); Xvoid soinsque (struct socket *head, struct socket *so, int q); Xint soqremque (struct socket *so, int q); Xvoid socantsendmore (struct socket *so); Xvoid socantrcvmore (struct socket *so); Xvoid sbselqueue (struct sockbuf *sb); Xvoid sbwait (struct sockbuf *sb); Xvoid sbwakeup (struct sockbuf *sb); Xvoid sowakeup (struct socket *so, struct sockbuf *sb); Xint soreserve (struct socket *so, int sndcc, int rcvcc); Xint sbreserve (struct sockbuf *sb, int cc); Xvoid sbrelease (struct sockbuf *sb); Xvoid sbappend (struct sockbuf *sb, struct mbuf *m); Xvoid sbappendrecord (struct sockbuf *sb, struct mbuf *m0); Xint sbappendaddr (struct sockbuf *sb, struct sockaddr *asa, struct mbuf *m0, struct mbuf *rights0); Xint sbappendrights (struct sockbuf *sb, struct mbuf *m0, struct mbuf *rights); Xvoid sbcompress (struct sockbuf *sb, struct mbuf *m, struct mbuf *n); Xvoid sbflush (struct sockbuf *sb); Xvoid sbdrop (struct sockbuf *sb, int len); Xvoid sbdroprecord (struct sockbuf *sb); X X/* X * Declarations from syscalls.c X */ X Xint sosetup(void); /* setup window stuff needed */ Xint soselect (void); Xint socket (void); Xint bind (void); Xint listen (void); Xint accept (void); Xint connect (void); Xint socketpair (void); Xint sendto (void); Xint send (void); Xint sendmsg (void); Xvoid sendit (int s, struct msghdr * mp, int flags); Xint recvfrom (void); Xint recv (void); Xint recvmsg (void); Xvoid recvit (int s, struct msghdr * mp, int flags, caddr_t np, caddr_t rp); Xint setsockopt (void); Xint getsockopt (void); Xint sockpipe (void); Xvoid getsockname (void); Xint sockargs (struct mbuf **aname, caddr_t name, int namelen, int type); Xstruct file *getsock (int fd); X X/* X * Declarations from usrreq.c X */ X Xint uipc_usrreq (struct socket *so, int req, struct mbuf *m, struct mbuf *nam, struct mbuf *rights); Xint unp_attach (struct socket *so); Xvoid unp_detach (struct unpcb *unp); Xint unp_bind (struct unpcb *unp, struct mbuf *nam); Xint unp_connect (struct socket *so, struct mbuf *nam); Xint unp_connect2 (struct socket *so1, struct socket *so2); Xvoid unp_disconnect (struct unpcb *unp); Xvoid unp_usrclosed (struct unpcb *unp); Xint unp_externalize (struct mbuf *rights); Xint unp_internalize (struct mbuf *rights); Xvoid unp_gc (void); Xvoid unp_dispose (struct mbuf *m); Xvoid unp_scan (struct mbuf *m0, int (*op)()); Xvoid unp_mark (struct file *fp); Xvoid unp_discard (struct file *fp); Xvoid unp_drop (struct unpcb *unp, int errno); X X/* X * declarations for linesw.c X */ Xint so_linesw_read(struct tty *tp); Xint so_linesw_write(struct tty *tp); Xint so_linesw_setup(void); X X/* Misc stuff from -bes X */ X X X/* X * declarations left out of systm.h X */ X Xint suser (void); Xint fuword (int * addr); Xint useracc (caddr_t address, int length, int flag); X Xshort spl7 (void); Xshort spl6 (void); Xshort spl5 (void); Xshort spl4 (void); Xshort spl3 (void); Xshort spl2 (void); Xshort spl1 (void); Xshort splx (short sp); X Xint sleep (caddr_t addr, int p); Xint wakeup (caddr_t addr); Xvoid signal (int pgrp, int sig); Xvoid psignal (struct proc * p, int sig); Xint setjmp (label_t env); Xvoid longjmp (label_t env, int val); X Xvoid panic (caddr_t msg); Xvoid printf(); Xvoid eprintf(); X Xint access (struct inode * ip, int mode); Xextern struct inode * iget (); Xvoid iput (struct inode * ip); Xvoid prele (struct inode * ip); Xint ufalloc (int fp); Xvoid closef (struct file * fp); Xvoid locsys (); X X#else ! __STDC__ X X/* X * Declarations from debug.c X */ X Xvoid dump_mbuf (); X X/* X * Declarations from domain.c X */ X Xvoid domaininit (); Xstruct protosw *pffindtype (); Xstruct protosw *pffindproto (); X X/* X * Declarations from interface.c X */ X Xvoid uipcinit (); Xvoid dosyscall(); Xint uipcrelease (); Xvoid uipc_write (); Xvoid uipc_read (); Xvoid uipc_close (); Xvoid bzero (); Xint ufavail (); X X/* X * Declarations from mbuf.c X */ X Xvoid mbinit(); Xstruct mbuf *m_get (); Xstruct mbuf *m_getclr (); Xstruct mbuf *m_free (); Xstruct mbuf *m_more (); Xvoid m_freem (); Xstruct mbuf *m_copy (); X X/* X * Declarations from socket.c X */ X Xint socreate (); Xint sobind (); Xint solisten (); Xvoid sofree (); Xint soclose (); Xint soabort (); Xint soaccept (); Xint soconnect (); Xint soconnect2 (); Xint sodisconnect (); Xint sosend (); Xint soreceive (); Xvoid sorflush (); Xint sosetopt (); Xint sogetopt (); Xvoid sohasoutofband (); X X/* X * Declarations from socket2.c X */ X X Xvoid soisconnecting (); Xvoid soisconnected (); Xvoid soisdisconnecting (); Xvoid soisdisconnected (); Xstruct socket *sonewconn (); Xvoid soinsque (); Xint soqremque (); Xvoid socantsendmore (); Xvoid socantrcvmore (); Xvoid sbselqueue (); Xvoid sbwait (); Xvoid sbwakeup (); Xvoid sowakeup (); Xint soreserve (); Xint sbreserve (); Xvoid sbrelease (); Xvoid sbappend (); Xvoid sbappendrecord (); Xint sbappendaddr (); Xint sbappendrights (); Xvoid sbcompress (); Xvoid sbflush (); Xvoid sbdrop (); Xvoid sbdroprecord (); X X/* X * Declarations from syscalls.c X */ X Xint sosetup(); /* setup window stuff needed */ Xint soselect (); Xint socket (); Xint bind (); Xint listen (); Xint accept (); Xint connect (); Xint socketpair (); Xint sockpipe (); Xint sendto(); Xint send(); Xint recvfrom(); Xint recv (); Xint setsockopt(); Xint getsockopt(); Xvoid sendit (); Xint sockpipe (); Xvoid getsockname (); Xvoid recvit (); Xint sockargs (); Xstruct file *getsock (); X X/* X * Declarations from usrreq.c X */ X Xint uipc_usrreq (); Xint unp_attach (); Xvoid unp_detach (); Xint unp_bind (); Xint unp_connect (); Xint unp_connect2 (); Xvoid unp_disconnect (); Xvoid unp_usrclosed (); Xvoid unp_drop (); Xint unp_externalize (); Xint unp_internalize (); Xvoid unp_gc (); Xvoid unp_dispose (); Xvoid unp_scan (); Xvoid unp_mark (); Xvoid unp_discard (); X X/* X * declarations for linesw.c X */ Xint so_linesw_read(); Xint so_linesw_write(); Xint so_linesw_setup(); X X/* X * declarations left out of systm.h X */ X Xshort spl7 (); Xshort spl6 (); Xshort spl5 (); Xshort spl4 (); Xshort spl3 (); Xshort spl2 (); Xshort spl1 (); Xshort splx (); X Xint sleep (); Xint wakeup (); X Xvoid panic (); Xvoid eprintf(); Xvoid signal (); Xvoid psignal (); X Xint setjmp (); Xvoid longjmp (); X Xint suser (); X X#endif __STDC__ X#endif _fproto_h_ + END-OF-FILE uipc/fproto.h chmod 'u=rw,g=rw,o=rw' 'uipc/fproto.h' echo ' -rw-rw-rw- 1 bes HSJ 8443 Aug 11 22:37 uipc/fproto.h (as sent)' echo ' \c' /bin/ls -l uipc/fproto.h echo 'Extracting uipc/mbuf.h' sed 's/^X//' > uipc/mbuf.h << '+ END-OF-FILE uipc/mbuf.h' X/* X * @(#)mbuf.h 1.1 (Alex Crain) 6/20/89 X * X * mbuf.h - mbuf description macros X * X * Written by Alex Crain. X * X * This file is loosly based in the Berkeley header file of the X * same name, but is *not* guarenteed to be in any way compatable. It is X * close enough to the berkeley code that the following applies... X * X * Copyright (c) 1982, 1986, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that this notice is preserved and that due credit is given X * to the University of California at Berkeley. The name of the University X * may not be used to endorse or promote products derived from this X * software without specific prior written permission. This software X * is provided "as is" without express or implied warranty. X * X */ X X#ifndef _mbuf_h_ X#define _mbuf_h_ X X#include X X#define MSIZE 128 X X#define MMINOFF 12 X#define MTAIL 4 X#define MMAXOFF (MSIZE - MTAIL) X#define MLEN (MSIZE - MMINOFF - MTAIL) X X#define dtom(x) ((struct mbuf *)((int)(x) & ~(MSIZE - 1))) X#define mtod(m, t) ((t)((int)(m) + (m)->m_off)) X X#define ptom(x) ((struct mbuf *)(((int)(x) << 7) | mbmask)) X#define mtop(x, t) ((t)(((int)(x) >> 7) & 0xFFFF)) X Xstruct mbuf { X struct mbuf * m_next; X u_long m_off; X short m_len; X short m_type; X u_char m_dat[MLEN]; X struct mbuf * m_act; X}; X X#define MT_FREE 0 X#define MT_DATA 1 X#define MT_HEADER 2 X#define MT_SOCKET 3 X#define MT_PCB 4 X#define MT_SONAME 8 X#define MT_SOOPTS 10 X#define MT_RIGHTS 12 X X/* flags to mget */ X#define M_DONTWAIT 0 X#define M_WAIT 1 X X/* length to m_copy to copy all */ X#define M_COPYALL 10000000 X X#define MGET(m, i, t) \ X{ int _s = splimp (); \ X if ((m) = mfree) \ X { if ((m)->m_type != MT_FREE) panic("mget"); (m)->m_type = t; \ X mfree = (m)->m_next; (m)->m_next = (struct mbuf *) 0; \ X (m)->m_off = MMINOFF; } \ X else \ X (m) = m_more (i, t); \ X splx (_s); } X X#define MFREE(m, n) \ X{ int _s = splimp (); \ X if ((m)->m_type == MT_FREE) panic ("mfree"); \ X (m)->m_type = MT_FREE; \ X (n) = (m)->m_next; (m)->m_next = mfree; mfree = (m); \ X (m)->m_off = 0; (m)->m_act = 0;\ X splx (_s); \ X if (m_want) \ X { m_want = 0; \ X wakeup((caddr_t)&mfree); }} X X#ifdef KERNEL Xstruct mbuf * mfree, * mbmem; Xunsigned int mbmask; Xint m_want; Xstruct mbuf * m_get (), * m_getclr(), *m_free (), * m_more (), * m_copy (); Xvoid m_freem (); X#endif X X#endif _mbuf_h_ + END-OF-FILE uipc/mbuf.h chmod 'u=rw,g=rw,o=rw' 'uipc/mbuf.h' echo ' -rw-rw-rw- 1 bes HSJ 2484 Jul 18 23:44 uipc/mbuf.h (as sent)' echo ' \c' /bin/ls -l uipc/mbuf.h echo 'Extracting uipc/number-ptys.h' sed 's/^X//' > uipc/number-ptys.h << '+ END-OF-FILE uipc/number-ptys.h' X/* number-ptys.h - Eric H. Herrin II X * X * define the number of ptys here so the actual number only has to be in X * one place. X * X * Version 2.1 X */ X#define NUMBER_OF_PTYS 8 + END-OF-FILE uipc/number-ptys.h chmod 'u=rw,g=r,o=r' 'uipc/number-ptys.h' echo ' -rw-r--r-- 1 bes HSJ 175 Aug 4 22:39 uipc/number-ptys.h (as sent)' echo ' \c' /bin/ls -l uipc/number-ptys.h echo 'Extracting uipc/protosw.h' sed 's/^X//' > uipc/protosw.h << '+ END-OF-FILE uipc/protosw.h' X/* X * @(#)protosw.h 1.1 (Alex Crain) 6/20/89 X * X * protosw.h - protocol switch definition X * X * Written by Alex Crain. X * X * This file is based in the Berkeley header file of the X * same name, but is *not* guarenteed to be in any way compatable. It is X * close enough to the berkeley code that the following applies... X * X * Copyright (c) 1982, 1986, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that this notice is preserved and that due credit is given X * to the University of California at Berkeley. The name of the University X * may not be used to endorse or promote products derived from this X * software without specific prior written permission. This software X * is provided "as is" without express or implied warranty. X * X */ X X#ifndef _proto_h_ X#define _proto_h_ X X#include X Xstruct protosw { X short pr_type; X struct domain * pr_domain; X short pr_protocol; X short pr_flags; X int (* pr_input) (); X int (* pr_output) (); X int (* pr_ctlinput) (); X int (* pr_ctloutput) (); X int (* pr_usrreq) (); X int (* pr_init) (); X int (* pr_fasttimo) (); X int (* pr_slowtimo) (); X int (* pr_drain) (); X}; X X#define PR_SLOWHZ 2 X#define PR_FASTHZ 5 X X/* X * values for pr_flags X */ X X#define PR_ATOMIC 0x01 /* exchange atomic messages only */ X#define PR_ADDR 0x02 /* addresses given w/ messages */ X#define PR_CONNREQUIRED 0x04 /* connection reuired by protocol */ X#define PR_WANTRCVD 0x08 /* want PRU_RCVD calls */ X#define PR_RIGHTS 0x10 /* passes capabilities */ X X/* X * arguments to usrreq X */ X X#define PRU_ATTACH 0 X#define PRU_DETACH 1 X#define PRU_BIND 2 X#define PRU_LISTEN 3 X#define PRU_CONNECT 4 X#define PRU_ACCEPT 5 X#define PRU_DISCONNECT 6 X#define PRU_SHUTDOWN 7 X#define PRU_RCVD 8 X#define PRU_SEND 9 X#define PRU_ABORT 10 X#define PRU_CONTROL 11 X#define PRU_SENSE 12 X#define PRU_RCVOOB 13 X#define PRU_SENDOOB 14 X#define PRU_SOCKADDR 15 X#define PRU_PEERADDR 16 X#define PRU_CONNECT2 17 X#define PRU_FASTTIMO 18 X#define PRU_SLOWTIMO 19 X#define PRU_PROTORCV 20 X#define PRU_PROTOSEND 21 X X#define PRE_NREQ 21 X X#define PRCO_GETOPT 0 X#define PRCO_SETOPT 1 X X#endif /* _proto_h_ */ + END-OF-FILE uipc/protosw.h chmod 'u=rw,g=rw,o=rw' 'uipc/protosw.h' echo ' -rw-rw-rw- 1 bes HSJ 2264 Jul 18 23:44 uipc/protosw.h (as sent)' echo ' \c' /bin/ls -l uipc/protosw.h echo 'Extracting uipc/pty.h' sed 's/^X//' > uipc/pty.h << '+ END-OF-FILE uipc/pty.h' X/* pty.h - Eric H. Herrin II (eric@ms.uky.edu) X * X * some elementary definitions for the pty driver (UnixPC version) X * X * Version 2.1 X */ X Xextern int ptsproc(); Xextern int ptyopen(); X X#define True (1 == 1) X#define False (0 == 1) X X/* This is the total number of ptys. Note the maximum number here is X * currently 64 for the UnixPC (128 minor devices/2 minor devices per pty X * yields 64 total ptys). I really don't see the need for more than 32 X * on the 3B1, however, if someone does, then (s)he can change it. X */ X#include X#define PTYCNT (dev_t)NUMBER_OF_PTYS X X/* some definitions to include kernel info from system header files. X */ X#define KERNEL 1 X#define defined_io 1 X#define NOSTREAMS 1 X X#define UNIXPC 1 X X/* This macro returns True if the parameter is a master minor device number, X * False otherwise. X */ X#define Master( dev ) (minor(dev) >= PTYCNT) X Xextern struct tty pts_tty[]; Xextern int pts_cnt; Xextern int ptystate[]; Xextern int pty_major; + END-OF-FILE uipc/pty.h chmod 'u=rw,g=r,o=r' 'uipc/pty.h' echo ' -rw-r--r-- 1 bes HSJ 983 Aug 6 11:00 uipc/pty.h (as sent)' echo ' \c' /bin/ls -l uipc/pty.h echo 'Extracting uipc/socket.h' sed 's/^X//' > uipc/socket.h << '+ END-OF-FILE uipc/socket.h' X/* X * @(#)socket.h 1.1 (Alex Crain) 6/20/89 X * X * socket.h - socket related definitions X * X * Written by Alex Crain. X * X * This file is loosly based in the Berkeley header file of the X * same name, but is *not* guarenteed to be in any way compatable. It is X * close enough to the berkeley code that the following applies... X * X * Copyright (c) 1982, 1986, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that this notice is preserved and that due credit is given X * to the University of California at Berkeley. The name of the University X * may not be used to endorse or promote products derived from this X * software without specific prior written permission. This software X * is provided "as is" without express or implied warranty. X * X */ X X#ifndef _socket_h_ X#define _socket_h_ X X#include X X/* X * Socket types X */ X X#define SOCK_STREAM 1 /* stream socket */ X#define SOCK_DGRAM 2 /* datagram socket */ X#ifdef notdef X#define SOCK_RAW 3 /* raw socket */ X#endif X X/* X * Socket option flags X */ X X#define SO_DEBUG 0x0001 X#define SO_ACCEPTCONN 0x0002 X#define SO_REUSEADDR 0x0004 X#define SO_KEEPALIVE 0x0008 X#define SO_DONTROUTE 0x0010 X#define SO_BROADCAST 0x0020 X#define SO_USELOOPBACK 0x0040 X#define SO_LINGER 0x0080 X#define SO_OOBINLINE 0x0100 X/* X * Extra socket options X */ X X#define SO_SNDBUF 0x1001 X#define SO_RCVBUF 0x1002 X#define SO_SNDLOWAT 0x1003 X#define SO_RCVLOWAT 0x1004 X#define SO_SNDTIMEO 0x1005 X#define SO_RCVTIMEO 0x1006 X#define SO_ERROR 0x1007 X#define SO_TYPE 0x1008 X X/* X * Linger structure X */ X Xstruct linger { X int l_onoff; X int l_linger; X}; X X#define SOL_SOCKET 0xffff X X/* X * Address families X */ X X#define AF_UNSPEC 0 X#define AF_UNIX 1 X#define AF_INIT 2 X X#define AF_MAX 3 X X/* X * Structure for address specs. X */ X Xstruct sockaddr { X u_short sa_family; /* address family */ X char sa_data[14]; /* address spec */ X}; X X/* X * Protocol families X */ X X#define PF_UNSPEC AF_UNSPEC X#define PF_UNIX AF_UNIX X#define PF_INET AF_INET X X#define PF_MAX AF_MAX X X/* X * maximum queue length for listen () X */ X X#define SOMAXCONN 5 X X X/* X * message header for recvmsg and sendmsg calls. X */ X Xstruct msghdr { X caddr_t msg_name; X int msg_namelen; X caddr_t msg_accrights; X int msg_accrightslen; X}; X X#define MSG_OOB 0x01 /* flag for out-of-band data */ X#define MSG_PEEK 0x02 /* peek at incomming message */ X#define MSG_DONTROUTE 0x04 /* send without routing tables */ X X#endif /* _socket_h_ */ + END-OF-FILE uipc/socket.h chmod 'u=rw,g=rw,o=rw' 'uipc/socket.h' echo ' -rw-rw-rw- 1 bes HSJ 2554 Jul 18 23:44 uipc/socket.h (as sent)' echo ' \c' /bin/ls -l uipc/socket.h echo 'Extracting uipc/socketvar.h' sed 's/^X//' > uipc/socketvar.h << '+ END-OF-FILE uipc/socketvar.h' X/* X * @(#)socketvar.h 1.1 (Alex Crain) 6/20/89 X * X * socketvar.h - socket related definitions X * X * Written by Alex Crain. X * X * This file is loosly based in the Berkeley header file of the X * same name, but is *not* guarenteed to be in any way compatable. It is X * close enough to the berkeley code that the following applies... X * X * Copyright (c) 1982, 1986, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that this notice is preserved and that due credit is given X * to the University of California at Berkeley. The name of the University X * may not be used to endorse or promote products derived from this X * software without specific prior written permission. This software X * is provided "as is" without express or implied warranty. X * X */ X X#ifndef _socketvar_h_ X#define _socketvar_h_ X X#include X X/* X * structure describing a socket. X */ X Xtypedef ushort socketptr; X Xstruct socket { X short so_type; X short so_options; X short so_linger; X short so_state; X caddr_t so_pcb; X struct protosw * so_proto; X X struct socket * so_head; X struct socket * so_q0; X struct socket * so_q; X short so_q0len; X short so_qlen; X short so_qlimit; X short so_timeo; X ushort so_error; X short so_pgrp; X u_long so_oobmark; X X struct sockbuf { X u_long sb_cc; X u_long sb_hiwat; X u_long sb_mbcnt; X u_long sb_mbmax; X u_long sb_lowat; X struct mbuf * sb_mb; X struct proc * sb_sel; X short sb_timeo; X short sb_flags; X } so_rcv, so_snd; X X#define SB_MAX (64 * 1024) X#define SB_LOCK 0x01 X#define SB_WANT 0x02 X#define SB_WAIT 0x04 X#define SB_SEL 0x08 X#ifdef notdef X#define SB_COLL 0x10 X#endif X}; X X/* X * Socket states X */ X#define SS_NOFDREF 0x001 X#define SS_ISCONNECTED 0x002 X#define SS_ISCONNECTING 0x004 X#define SS_ISDISCONNECTING 0x008 X#define SS_CANTSENDMORE 0x010 X#define SS_CANTRCVMORE 0x020 X#define SS_RCVATMARK 0x040 X X#define SS_PRIV 0x080 X#define SS_NBIO 0x100 X#define SS_ASYNC 0x200 X X/* X * Socket macros X */ X X#define sbspace(sb) \ X (MIN ((long) ((sb)->sb_hiwat - (sb)->sb_cc), \ X (long) ((sb)->sb_mbmax - (sb)->sb_mbcnt))) X X#define sendallatonce(so) \ X ((so)->so_proto->pr_flags & PR_ATOMIC) X X#define soreadable(so) \ X ((so)->so_rcv.sb_cc || ((so)->so_state & SS_CANTRCVMORE) || \ X (so)->so_qlen || (so)->so_error) X X#define sowriteable(so) \ X (sbspace (&(so)->so_snd) > 0 && \ X (((so)->so_state & SS_ISCONNECTED) || \ X ((so)->so_proto->pr_flags & PR_CONNREQUIRED) == 0) || \ X ((so)->so_state & SS_CANTSENDMORE) || \ X (so)->so_error) X X#define sballoc(sb, m) \ X{ (sb)->sb_cc += (m)->m_len; \ X (sb)->sb_mbcnt += MSIZE; } X X#define sbfree(sb, m) \ X{ (sb)->sb_cc -= (m)->m_len; \ X (sb)->sb_mbcnt -= MSIZE; } X X#define sblock(sb) \ X{ while ((sb)->sb_flags & SB_LOCK) \ X { (sb)->sb_flags |= SB_WANT; \ X (void) sleep ((caddr_t) &(sb)->sb_flags, PZERO+1); } \ X (sb)->sb_flags |= SB_LOCK; } X X#define sbunlock(sb) \ X{ (sb)->sb_flags &= ~SB_LOCK; \ X if ((sb)->sb_flags & SB_WANT) \ X { (sb)->sb_flags &= ~SB_WANT; \ X wakeup ((caddr_t) &(sb)->sb_flags); }} X X#define sorwakeup(so) sowakeup (so, &(so)->so_rcv) X#define sowwakeup(so) sowakeup (so, &(so)->so_snd) X X#ifdef KERNEL X#ifdef __STDC__ Xstruct socket * sonewconn (struct socket *); X#else /* __STDC__ */ Xstruct socket * sonewconn (); X#endif /* __STDC__ */ X Xextern int select_sleep; /* value to say if we need to wakeup */ Xextern int select_sleep_addr; /* address we select on if wait in select */ X#endif KERNAL X X#endif /* _socketvar_h_ */ + END-OF-FILE uipc/socketvar.h chmod 'u=rw,g=rw,o=rw' 'uipc/socketvar.h' echo ' -rw-rw-rw- 1 bes HSJ 3629 Aug 2 20:49 uipc/socketvar.h (as sent)' echo ' \c' /bin/ls -l uipc/socketvar.h echo 'Extracting uipc/un.h' sed 's/^X//' > uipc/un.h << '+ END-OF-FILE uipc/un.h' X/* X * @(#)un.h 1.1 (Alex Crain) 6/20/89 X * X * UNIX Domain definitions X */ X X#ifndef _un_h_ X#define _un_h_ X X#include X Xstruct sockaddr_un { X short sun_family; /* AF_UNIX */ X char sun_path[108]; /* path name */ X}; X X#endif /* _un_h_ */ + END-OF-FILE uipc/un.h chmod 'u=rw,g=rw,o=rw' 'uipc/un.h' echo ' -rw-rw-rw- 1 bes HSJ 255 Jul 18 23:44 uipc/un.h (as sent)' echo ' \c' /bin/ls -l uipc/un.h echo 'Extracting uipc/unpcb.h' sed 's/^X//' > uipc/unpcb.h << '+ END-OF-FILE uipc/unpcb.h' X/* X * @(#)unpcb.h 1.1 (Alex Crain) 6/20/89 X * X * unpcb.h - unix intern protocol control block. X * X * Written by Alex Crain. X * X * This file is loosly based in the Berkeley file unpcb.h, X * but is *not* guarenteed to be in any way compatable. It is X * close enough to the Berkeley code that the following applies... X * X * Copyright (c) 1982, 1986, 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that this notice is preserved and that due credit is given X * to the University of California at Berkeley. The name of the University X * may not be used to endorse or promote products derived from this X * software without specific prior written permission. This software X * is provided "as is" without express or implied warranty. X * X */ X X#ifndef _unpcb_h_ X#define _unpcb_h_ X X#include X Xstruct unpcb { X struct socket * unp_socket; /* backpointer to socket */ X struct inode * unp_inode; /* file reference */ X ino_t unp_ino; /* fake inode number */ X struct unpcb * unp_conn; /* control block of connected socket */ X struct unpcb * unp_refs; /* referencing socket liked list */ X struct unpcb * unp_nextref; /* link in unp_refs list */ X struct mbuf * unp_addr; /* bound address of socket */ X int unp_cc; /* copy of rcv.sb_cc */ X int unp_mbcnt; /* copy of rcv.sb_mbcnt */ X}; X X#define sotounpcb(so) ((struct unpcb *)((so)->so_pcb)) X X#endif /* _unpcb_h_ */ + END-OF-FILE uipc/unpcb.h chmod 'u=rw,g=rw,o=rw' 'uipc/unpcb.h' echo ' -rw-rw-rw- 1 bes HSJ 1543 Jul 18 23:44 uipc/unpcb.h (as sent)' echo ' \c' /bin/ls -l uipc/unpcb.h if test -f 'lib' then rm 'lib' fi if test -d 'lib' then : else echo 'Making lib/' mkdir 'lib' fi chmod 'u=rwx,g=rx,o=rx' 'lib' echo 'Extracting lib/Makefile' sed 's/^X//' > lib/Makefile << '+ END-OF-FILE lib/Makefile' X# X# @(#)Makefile 1.1 (Alex Crain) 6/20/89 X# X# Makefile for user interface to the uipc loadable driver. X# X# copyright (c) 1989 Alex Crain X# X X# CC=gcc XRM=/bin/rm XMV=/bin/mv XECHO=/bin/echo XM4=/usr/bin/m4 XSHELL=/bin/sh XGET=/usr/bin/get XCFLAGS= -O $(VFLAG) X XSCCSDIR=../sccs/lib X X# X# the various file catagories. X# XCALLS=xxx XSSUPPORT=syserr.o __cerror.o XCSUPPORT=perror.o select.o XCSOURCE=perror.c select.c XSCCSFILES=Makefile.m4 gencall.m4 generic.m4 sockpipe.m4\ Xsyserr.s __cerror.s perror.c X Xall: Makefile.m4 X make libuipc.a CALLS="`m4 Makefile.m4`" X Xlibuipc.a: $(CALLS) $(SSUPPORT) $(CSUPPORT) X rm -f libuipc.a X ar cq libuipc.a $(CALLS) $(SSUPPORT) $(CSUPPORT) X X$(CALLS): ../sysconfig.m4 gencall.m4 generic.m4 X $(ECHO) "define(MYSELF,$@)" | $(M4) - gencall.m4 > tmp.s X $(AS) -o $@ tmp.s X $(RM) tmp.s X X$(CSUPPORT): $(?:.o=.c) X $(CC) $(CFLAGS) -c $(?:.o=.c) X X$(SSUPPORT): $(?:.o=.s) X $(AS) $(?:.o=.s) X X$(SCCSFILES): X $(GET) $(GFLAGS) -p $(SCCSDIR)/s.$@ > $@ X Xdepend: X cat Makefile | sed -e "/^### DEPEND LINE/q" > Make.tmp X $(CC) -I. -M $(SOURCES) >> Make.tmp X $(MV) Make.tmp Makefile X Xclean: X $(RM) -f libuipc.a *.o \#* *~ core X X X### DEPEND LINE --- do not delete! ### + END-OF-FILE lib/Makefile chmod 'u=rw,g=rw,o=rw' 'lib/Makefile' echo ' -rw-rw-rw- 1 bes HSJ 1167 Aug 12 09:24 lib/Makefile (as sent)' echo ' \c' /bin/ls -l lib/Makefile echo 'Extracting lib/Makefile.m4' sed 's/^X//' > lib/Makefile.m4 << '+ END-OF-FILE lib/Makefile.m4' Xdivert(-1) X# @(#)Makefile.m4 1.1 (Alex Crain) 6/19/89 X# X# This file is used to generate the arguments for Makefile. X# Xdefine(concat,$1$2$3$4$5) Xdefine(RESULT,) Xdefine(DEFSYSCALL,`define(`RESULT',concat(RESULT,$2,.o,` '))') Xinclude(../sysconfig.m4) Xdivert XRESULT + END-OF-FILE lib/Makefile.m4 chmod 'u=rw,g=rw,o=rw' 'lib/Makefile.m4' echo ' -rw-rw-rw- 1 bes HSJ 263 Jul 18 23:43 lib/Makefile.m4 (as sent)' echo ' \c' /bin/ls -l lib/Makefile.m4 echo 'Extracting lib/__cerror.s' sed 's/^X//' > lib/__cerror.s << '+ END-OF-FILE lib/__cerror.s' X# X text X asciz "@(#)__cerror.s 1.1 (Alex Crain) 6/19/89" X# X# Error handler for system call stub functions X# X global __cerror X__cerror: X X mov.l %d0,errno X mov.l &-1,%d0 X mov.l &0xffffffff,%a0 X rts X X data X + END-OF-FILE lib/__cerror.s chmod 'u=rw,g=rw,o=rw' 'lib/__cerror.s' echo ' -rw-rw-rw- 1 bes HSJ 205 Jul 18 23:43 lib/__cerror.s (as sent)' echo ' \c' /bin/ls -l lib/__cerror.s echo 'Extracting lib/gencall.m4' sed 's/^X//' > lib/gencall.m4 << '+ END-OF-FILE lib/gencall.m4' Xdivert(-1) X# X# @(#)gencall.m4 1.1 (Alex Crain) 6/20/89 X# X# gencall.m4 - generate a system call stub function X# X# This file is used with the command X# X# echo "define(MYSELF,.o)" | m4 - gencall.m4 > .s X# X# where syscall is the system call function to be generated. The call must X# be defined in sysconfig.h with a DEFSYSCALL macro. X# X# The resulting stub function is patterened after the code in generic.m4, X# unless the the file .m4 exists, in which case that code will be X# used instead. X# Xdefine(MYNAME,substr(MYSELF,0,eval(len(MYSELF)-2))) Xdefine(DEFSYSCALL, X `ifelse($2,MYNAME, X `define(SYSCALL_NUMBER,incr(SYSENT_OFFSET))') X define(`SYSENT_OFFSET',incr(SYSENT_OFFSET))') Xdefine(CONCAT,$1$2$3$4) Xinclude(../sysconfig.m4) Xinclude(generic.m4) Xsinclude(CONCAT(MYNAME,.m4)) Xdefine(SYSCALL_NAME,MYNAME) Xdefine(SCCSDEF,`CONCAT(MYSELF,.s,` (Alex Crain) 6/1/89')') Xdivert XPROCEDURE + END-OF-FILE lib/gencall.m4 chmod 'u=rw,g=rw,o=rw' 'lib/gencall.m4' echo ' -rw-rw-rw- 1 bes HSJ 907 Jul 18 23:43 lib/gencall.m4 (as sent)' echo ' \c' /bin/ls -l lib/gencall.m4 echo 'Extracting lib/generic.m4' sed 's/^X//' > lib/generic.m4 << '+ END-OF-FILE lib/generic.m4' X# X# @(#)generic.m4 1.1 (Alex Crain) 6/19/89 X# X# generic form for system calls X# X# Xdefine(PROCEDURE, X`# X text X global SYSCALL_NAME XSYSCALL_NAME: X mov.l (%sp),-(%sp) # move the return address X mov.l &SYSCALL_NUMBER,4(%sp) # insert the first argument X mov.w &67,%d0 # X trap &0 # trap to syslocal() X bcc noerror # return if status = 0 X jmp __cerror # otherwise __cerror() Xnoerror: # X rts # X') + END-OF-FILE lib/generic.m4 chmod 'u=rw,g=rw,o=rw' 'lib/generic.m4' echo ' -rw-rw-rw- 1 bes HSJ 412 Jul 18 23:43 lib/generic.m4 (as sent)' echo ' \c' /bin/ls -l lib/generic.m4 echo 'Extracting lib/perror.c' sed 's/^X//' > lib/perror.c << '+ END-OF-FILE lib/perror.c' X#ifndef LINT Xstatic char * sccsdef = "@(#)perror.c 1.1 (Alex Crain) 6/19/89"; X#endif X X/* X * X * Replace ment for the perror(3c) subroutine. Note that sys_errlist and X * sys_nerr have been renamed to uipc_errlist and uipc_lasterr, and that X * uipc_firsterr has been added. uipc_firsterr and uipc_lasterr represent X * the maximum negative and posative offsets to uipc_errlist, respectively. X * X * Note also that we don't check for overflow of the print buffer, but 1024 X * should be enough. X */ X Xvoid Xperror(str) X char * str; X{ X extern int errno; X extern int uipc_lasterr; X extern int uipc_firsterr; X extern char * uipc_errlist[]; X int offset = (int) ((char) errno); X char buffer[1024]; X X if (str && strlen (str)) X { X strcpy (buffer, str); X strcat (buffer, ": "); X } X else X buffer[0] = '\0'; X X if (offset == 0 || X (offset < 0 && offset >= uipc_firsterr) || X (offset > 0 && offset <= uipc_lasterr)) X X { X strcat (buffer, uipc_errlist[offset]); X strcat (buffer, ".\n"); X } X else X sprintf (&buffer[strlen (buffer)], "Unknown error # %d.\n", errno); X X write (2, buffer, strlen (buffer)); X return; X} + END-OF-FILE lib/perror.c chmod 'u=rw,g=rw,o=rw' 'lib/perror.c' echo ' -rw-rw-rw- 1 bes HSJ 1177 Jul 18 23:43 lib/perror.c (as sent)' echo ' \c' /bin/ls -l lib/perror.c echo 'Extracting lib/select.c' sed 's/^X//' > lib/select.c << '+ END-OF-FILE lib/select.c' X#ifndef LINT Xstatic char * sccsdef = "@(#)select.c 1.1 (Brad Smith) 8/2/89"; X#endif X X/* X * select call X */ X X#include X#include X Xjmp_buf sel_jmp; X Xint Xselect(nfds,readfds,writefds,execptfds,timeout) Xint nfds, *readfds, *writefds, *execptfds; Xlong *timeout; X{ X int ret; X int alrm_time, (*alrm_func)(), select_catch(); X int rd_save, wr_save, ex_save; X X if(readfds) X rd_save = *readfds; X if(writefds) X wr_save = *writefds; /* NOT SUPPORTED YET*/ X /* ex_save = *execptfds; /* NOT SUPPORTED YET*/ X X if(timeout && (*timeout == 0)) { /* Poll it just once */ X ret = soselect(nfds, readfds, writefds, execptfds); X return(ret); X } X X if(timeout) { /* if we want a time to stop then */ X alrm_time = alarm((int) (*timeout)); /* save old value */ X alrm_func = signal(SIGALRM, select_catch); /* function */ X if(setjmp(sel_jmp)) { /* got alarm */ X /* means we had a timeout */ X if(alrm_time) { X signal(SIGALRM, alrm_func); /* reset signal */ X alarm(alrm_time); X } else X signal(SIGALRM, SIG_DFL); X return(0); /* tell them no data */ X } X } X do { X /* set bitmask incase this is more than first time */ X if(readfds) X *readfds = rd_save; X /* *writefds = wr_save; /* */ X /* *execptfds = ex_save; /* */ X ret = soselect(nfds, readfds, writefds, execptfds); X } while(ret == 0); X if(timeout) { /* need to reset things */ X if(alrm_time) { X signal(SIGALRM, alrm_func); /* reset signal */ X alarm(alrm_time); X } else { X alarm(0); X signal(SIGALRM, SIG_DFL); X } X } X return (ret); /* return value */ X} Xselect_catch() X{ X /* got alarm */ X longjmp(sel_jmp,1); /* tell them a timeout */ X} + END-OF-FILE lib/select.c chmod 'u=rw,g=r,o=r' 'lib/select.c' echo ' -rw-r--r-- 1 bes HSJ 1657 Aug 11 20:38 lib/select.c (as sent)' echo ' \c' /bin/ls -l lib/select.c echo 'Extracting lib/syserr.s' sed 's/^X//' > lib/syserr.s << '+ END-OF-FILE lib/syserr.s' X# X text X asciz "@(#)syserr.s 1.1 (Alex Crain) 6/19/89" X X# X# System error messages for uipc perror() function. X# X XERROR0: asciz "Error 0" # 0 X X# X# Standard unix errors X# X XEPERM: asciz "Not super-user" # 1 XENOENT: asciz "No such file or directory" # 2 XESRCH: asciz "No such process" # 3 XEINTR: asciz "interrupted system call" # 4 XEIO: asciz "I/O error" # 5 XENXIO: asciz "No such device or address" # 6 XE2BIG: asciz "Arg list too long" # 7 XENOEXEC: asciz "Exec format error" # 8 XEBADF: asciz "Bad file number" # 9 XECHILD: asciz "No children" # 10 XEAGAIN: asciz "No more processes" # 11 XENOMEM: asciz "Not enough core" # 12 XEACCES: asciz "Permission denied" # 13 XEFAULT: asciz "Bad address" # 14 XENOTBLK: asciz "Block device required" # 15 XEBUSY: asciz "Mount device busy" # 16 XEEXIST: asciz "File exists" # 17 XEXDEV: asciz "Cross-device link" # 18 XENODEV: asciz "No such device" # 19 XENOTDIR: asciz "Not a directory" # 20 XEISDIR: asciz "Is a directory" # 21 XEINVAL: asciz "Invalid argument" # 22 XENFILE: asciz "File table overflow" # 23 XEMFILE: asciz "Too many open files" # 24 XENOTTY: asciz "Not a typewriter" # 25 XETXTBSY: asciz "Text file busy" # 26 XEFBIG: asciz "File too large" # 27 XENOSPC: asciz "No space left on device" # 28 XESPIPE: asciz "Illegal seek" # 29 XEROFS: asciz "Read only file system" # 30 XEMLINK: asciz "Too many links" # 31 XEPIPE: asciz "Broken pipe" # 32 XEDOM: asciz "Math arg out of domain of func"# 33 XERANGE: asciz "Math result not representable" # 34 XENOMSG: asciz "No message of desired type" # 35 XEIDRM: asciz "Identifier removed" # 36 XECHRNG: asciz "Channel number out of range" # 37 XEL2NSYNC: asciz "Level 2 not synchronized" # 38 XEL3HLT: asciz "Level 3 halted" # 39 XEL3RST: asciz "Level 3 reset" # 40 XELNRNG: asciz "Link number out of range" # 41 XEUNATCH: asciz "Protocol driver not attached" # 42 XENOCSI: asciz "No CSI structure available" # 43 XEL2HLT: asciz "Level 2 halted" # 44 X X# X# filler messages X# X XERROR45: asciz "Error 45" # 45 XERROR46: asciz "Error 46" # 46 XERROR47: asciz "Error 47" # 47 XERROR48: asciz "Error 48" # 48 XERROR49: asciz "Error 49" # 49 X X# X# Convergent Errors X# X XEBADE: asciz "invalid exchange" # 50 XEBADR: asciz "invalid request descriptor" # 51 XEXFULL: asciz "exchange full" # 52 XENOANO: asciz "no anode" # 53 XEBADRQC: asciz "invalid request code" # 54 XEBADSLT: asciz "invalid slot" # 55 XEDEADLOCK: asciz "file locking deadlock error" # 56 XEBFONT: asciz "bad font file fmt" # 57 X X# For BASSLOCKING X XENOLCK: asciz "no more locks available" # 58 XEDEADLK: asciz "file locking deadlock error" # 59 X X# X# Hardware specific errors X# X XENOHDW: asciz "No hardware available for operation" # -32 XEBADFS: asciz "bitmapped filesystem is marked dirty" # -31 X X# X# 4.[23] BSD error numbers & messages X# X# errors for non-blocking I/O. X# X XEWOULDBLOCK: asciz "Operation would block" # -30 XEINPROGRESS: asciz "Operation now in progress" # -29 XEALREADY: asciz "Operation already in progress" # -28 X X# X# Uipc errors X# X# Argument errors X# X XENOTSOCK: asciz "Socket operation on non-socket" # -27 XEDESTADDRREQ: asciz "Destination address required" # -26 XEMSGSIZE: asciz "Message too long" # -25 XEPROTOTYPE: asciz "Protocol wrong type for socket" # -24 XEPROTONOSUPPORT: asciz "Protocol not supported" # -23 XESOCKTNOSUPPORT: asciz "Socket type not supported" # -22 XEOPNOTSUPP: asciz "Operation not supported on socket" # -21 XEPFNOSUPPORT: asciz "Protocol family not supported" # -20 XEAFNOSUPPORT: asciz "Address family not supported by protocol family" # -19 XEADDRINUSE: asciz "Address already in use" # -18 XEADDRNOTAVAIL: asciz "Can't assign requested address" # -17 X X# X# Network errors X# X XENETDOWN: asciz "Network is down" # -16 XENETUNREACH: asciz "Network is unreachable" # -15 XENETRESET: asciz "Network dropped connection on reset" # -14 XECONNABORTED: asciz "Software caused connection abort" # -13 XECONNRESET: asciz "Connection reset by peer" # -12 XENOBUFS: asciz "No buffer space available" # -11 XEISCONN: asciz "Socket is already connected" # -10 XENOTCONN: asciz "Socket is not connected" # -9 XESHUTDOWN: asciz "Can't send after socket shutdown" # -8 XETOOMANYREFS: asciz "Too many references: can't splice" # -7 XETIMEDOUT: asciz "Connection timed out" # -6 XECONNREFUSED: asciz "Connection refused" # -5 XEHOSTDOWN: asciz "Host is down" # -4 XEHOSTUNREACH: asciz "No route to host" # -3 XENOPROTOOPT: asciz "Protocol not available" # -2 X XERROR_1: asciz "Error -1" # -1 X X# X# The system error table X# X data X even X X long ENOHDW X long EBADFS X long EWOULDBLOCK X long EINPROGRESS X long EALREADY X long ENOTSOCK X long EDESTADDRREQ X long EMSGSIZE X long EPROTOTYPE X long EPROTONOSUPPORT X long ESOCKTNOSUPPORT X long EOPNOTSUPP X long EPFNOSUPPORT X long EAFNOSUPPORT X long EADDRINUSE X long EADDRNOTAVAIL X long ENETDOWN X long ENETUNREACH X long ENETRESET X long ECONNABORTED X long ECONNRESET X long ENOBUFS X long EISCONN X long ENOTCONN X long ESHUTDOWN X long ETOOMANYREFS X long ETIMEDOUT X long ECONNREFUSED X long EHOSTDOWN X long EHOSTUNREACH X long ENOPROTOOPT X long ERROR_1 X X global uipc_errlist Xuipc_errlist: X long ERROR0 X long EPERM X long ENOENT X long ESRCH X long EINTR X long EIO X long ENXIO X long E2BIG X long ENOEXEC X long EBADF X long ECHILD X long EAGAIN X long ENOMEM X long EACCES X long EFAULT X long ENOTBLK X long EBUSY X long EEXIST X long EXDEV X long ENODEV X long ENOTDIR X long EISDIR X long EINVAL X long ENFILE X long EMFILE X long ENOTTY X long ETXTBSY X long EFBIG X long ENOSPC X long ESPIPE X long EROFS X long EMLINK X long EPIPE X long EDOM X long ERANGE X long ENOMSG X long EIDRM X long ECHRNG X long EL2NSYNC X long EL3HLT X long EL3RST X long ELNRNG X long EUNATCH X long ENOCSI X long EL2HLT X long ERROR45 X long ERROR46 X long ERROR47 X long ERROR48 X long ERROR49 X long EBADE X long EBADR X long EXFULL X long ENOANO X long EBADRQC X long EBADSLT X long EDEADLOCK X long EBFONT X long ENOLCK X long EDEADLK X X even X X global uipc_firsterr Xuipc_firsterr: X long -32 X X global uipc_lasterr Xuipc_lasterr: X long 59 X + END-OF-FILE lib/syserr.s chmod 'u=rw,g=rw,o=rw' 'lib/syserr.s' echo ' -rw-rw-rw- 1 bes HSJ 6051 Jul 18 23:43 lib/syserr.s (as sent)' echo ' \c' /bin/ls -l lib/syserr.s exit 0 -- Bradley Smith Computer Systems Offer Integration Laboratory AT&T Bell Labs, Holmdel, NJ 201-949-0090 att!holin!bes or bes@holin.ATT.COM