1 /* 2 * usb/disk - usb mass storage file server 3 */ 4 #include <u.h> 5 #include <libc.h> 6 #include <fcall.h> 7 #include <thread.h> 8 #include "scsireq.h" 9 #include "usb.h" 10 #include "usbfs.h" 11 #include "ums.h" 12 13 enum 14 { 15 Arglen = 80, 16 }; 17 18 static void 19 usage(void) 20 { 21 fprint(2, "usage: %s [-Dd] [-m mnt] [-s srv] [dev...]\n", argv0); 22 threadexitsall("usage"); 23 } 24 25 static int csps[] = { 26 CSP(Clstorage,Subatapi,Protobulk), 27 CSP(Clstorage,Sub8070,Protobulk), 28 CSP(Clstorage,Subscsi,Protobulk), 29 0, 30 }; 31 32 void 33 threadmain(int argc, char **argv) 34 { 35 char args[Arglen]; 36 char *as; 37 char *ae; 38 char *srv; 39 char *mnt; 40 41 srv = nil; 42 mnt = "/n/disk"; 43 44 quotefmtinstall(); 45 ae = args+sizeof(args); 46 as = seprint(args, ae, "disk"); 47 ARGBEGIN{ 48 case 'D': 49 usbfsdebug++; 50 break; 51 case 'd': 52 usbdebug++; 53 as = seprint(as, ae, " -d"); 54 break; 55 case 'm': 56 mnt = EARGF(usage()); 57 break; 58 case 's': 59 srv = EARGF(usage()); 60 default: 61 usage(); 62 }ARGEND 63 64 rfork(RFNOTEG); 65 threadsetgrp(threadid()); 66 fmtinstall('U', Ufmt); 67 usbfsinit(srv, mnt, &usbdirfs, MBEFORE); 68 startdevs(args, argv, argc, matchdevcsp, csps, diskmain); 69 threadexits(nil); 70 } 71