Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/changes/2005/1211/11

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


Network-aware and auth-aware 9P library.
 [rsc] --rw-rw-r-- M 84741 glenda sys 15859 Dec 11 16:18 sys/man/2/9p
	/n/sourcesdump/2005/1211/plan9/sys/man/2/9p:10,15 - 
	/n/sourcesdump/2005/1212/plan9/sys/man/2/9p:10,16
	  readbuf,
	  readstr,
	  respond,
	+ responderror,
	  threadpostmountsrv,
	  srv \- 9P file service
	  .SH SYNOPSIS
	/n/sourcesdump/2005/1211/plan9/sys/man/2/9p:61,68 - 
	/n/sourcesdump/2005/1212/plan9/sys/man/2/9p:62,72
	  int	srv(Srv *s)
	  void	postmountsrv(Srv *s, char *name, char *mtpt, int flag)
	  void	threadpostmountsrv(Srv *s, char *name, char *mtpt, int flag)
	+ void	listensrv(Srv *s, char *addr)
	+ void	threadlistensrv(Srv *s, char *addr)
	  int	postfd(char *srvname, int fd)
	  void	respond(Req *r, char *error)
	+ void	responderror(Req*)
	  void	readstr(Req *r, char *src)
	  void	readbuf(Req *r, void *src, long nsrc)
	  typedef int Dirgen(int n, Dir *dir, void *aux)
	/n/sourcesdump/2005/1211/plan9/sys/man/2/9p:217,222 - 
	/n/sourcesdump/2005/1212/plan9/sys/man/2/9p:221,241
	  .I sysfatal
	  (see
	  .IR perror (2)).
	+ .PP
	+ .I Listensrv
	+ and
	+ .I threadlistensrv
	+ create a separate process to announce as
	+ .IR addr .
	+ The process listens for incoming connections,
	+ creating a new process to serve each.
	+ Using these functions results in 
	+ .I srv
	+ and the service functions
	+ being run in multiple processes simultaneously.
	+ The library locks its own data structures as necessary;
	+ the client may need to lock data it shares between
	+ the multiple connections.
	  .SS Service functions
	  The functions in a 
	  .B Srv
	/n/sourcesdump/2005/1211/plan9/sys/man/2/9p:288,293 - 
	/n/sourcesdump/2005/1212/plan9/sys/man/2/9p:307,319
	  .B Req*
	  as well as any pointers it once contained must
	  be considered freed and not referenced.
	+ .PP
	+ .I Responderror
	+ calls 
	+ .I respond
	+ with the system error string
	+ (see
	+ .IR errstr (2)).
	  .PP
	  If the service loop detects an error in a request
	  (e.g., an attempt to reuse an extant fid, an open of
 [rsc] --rw-rw-r-- M 84741 glenda sys 4759 Dec 11 16:45 sys/include/9p.h
	/n/sourcesdump/2005/1211/plan9/sys/include/9p.h:198,203 - 
	/n/sourcesdump/2005/1212/plan9/sys/include/9p.h:198,204
	  	int		nopipe;
	  	int		srvfd;
	  	int		leavefdsopen;	/* magic for acme win */
	+ 	char*	keyspec;
	  
	  /* below is implementation-specific; don't use */
	  	Fidpool*	fpool;
	/n/sourcesdump/2005/1211/plan9/sys/include/9p.h:208,220 - 
	/n/sourcesdump/2005/1212/plan9/sys/include/9p.h:209,227
	  	QLock	rlock;
	  	uchar*	wbuf;
	  	QLock	wlock;
	+ 	
	+ 	char*	addr;
	  };
	  
	  void		srv(Srv*);
	  void		postmountsrv(Srv*, char*, char*, int);
	+ void		_postmountsrv(Srv*, char*, char*, int);
	+ void		listensrv(Srv*, char*);
	+ void		_listensrv(Srv*, char*);
	  int 		postfd(char*, int);
	  int		chatty9p;
	  void		respond(Req*, char*);
	+ void		responderror(Req*);
	  void		threadpostmountsrv(Srv*, char*, char*, int);
	  
	  /*
	/n/sourcesdump/2005/1211/plan9/sys/include/9p.h:230,236 - 
	/n/sourcesdump/2005/1212/plan9/sys/include/9p.h:237,252
	  	OMASK = 3
	  };
	  
	- void readstr(Req*, char*);
	- void readbuf(Req*, void*, long);
	- void	walkandclone(Req*, char*(*walk1)(Fid*,char*,void*), char*(*clone)(Fid*,Fid*,void*), void*);
	+ void		readstr(Req*, char*);
	+ void		readbuf(Req*, void*, long);
	+ void		walkandclone(Req*, char*(*walk1)(Fid*,char*,void*), 
	+ 			char*(*clone)(Fid*,Fid*,void*), void*);
	+ 
	+ void		auth9p(Req*);
	+ void		authread(Req*);
	+ void		authwrite(Req*);
	+ void		authdestroy(Fid*);
	+ int		authattach(Req*);
	+ 
	+ extern void (*_forker)(void (*)(void*), void*, int);
	  


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].