flash.c 973 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <auth.h>
  4. #include <fcall.h>
  5. #include <thread.h>
  6. #include <9p.h>
  7. #include "flashfs.h"
  8. extern int chatty9p;
  9. static void
  10. usage(void)
  11. {
  12. fprint(2, "usage: %s [-rD] [-n nsect] [-z sectsize] [-m mount] [-f file]\n", argv0);
  13. exits("usage");
  14. }
  15. static ulong
  16. argval(char *arg)
  17. {
  18. long v;
  19. char *extra;
  20. if(arg == nil)
  21. usage();
  22. v = strtol(arg, &extra, 0);
  23. if(*extra || v <= 0)
  24. usage();
  25. return v;
  26. }
  27. void
  28. main(int argc, char **argv)
  29. {
  30. int ro;
  31. char *file, *mount;
  32. mount = "/n/brzr";
  33. ro = 0;
  34. file = "/dev/flash/fs";
  35. ARGBEGIN {
  36. case 'D':
  37. chatty9p++;
  38. break;
  39. case 'r':
  40. ro++;
  41. break;
  42. case 'n':
  43. nsects = argval(ARGF());
  44. break;
  45. case 'z':
  46. sectsize = argval(ARGF());
  47. break;
  48. case 'f':
  49. file = ARGF();
  50. break;
  51. case 'm':
  52. mount = ARGF();
  53. break;
  54. default:
  55. usage();
  56. } ARGEND
  57. if(argc != 0)
  58. usage();
  59. initdata(file, 0);
  60. sectbuff = emalloc9p(sectsize);
  61. einit();
  62. loadfs(ro);
  63. serve(mount);
  64. exits(nil);
  65. }