lock.c 504 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <u.h>
  2. #include <libc.h>
  3. #include "iotrack.h"
  4. #include "dat.h"
  5. #include "fns.h"
  6. void
  7. mlock(MLock *l)
  8. {
  9. if(l->key != 0 && l->key != 1)
  10. panic("uninitialized lock");
  11. if (l->key)
  12. panic("lock");
  13. l->key = 1;
  14. }
  15. void
  16. unmlock(MLock *l)
  17. {
  18. if(l->key != 0 && l->key != 1)
  19. panic("uninitialized unlock");
  20. if (!l->key)
  21. panic("unlock");
  22. l->key = 0;
  23. }
  24. int
  25. canmlock(MLock *l)
  26. {
  27. if(l->key != 0 && l->key != 1)
  28. panic("uninitialized canlock");
  29. if (l->key)
  30. return 0;
  31. l->key = 1;
  32. return 1;
  33. }