mounter_solaris.go 811 B

123456789101112131415161718192021222324252627282930313233
  1. // +build solaris,cgo
  2. package mount
  3. import (
  4. "golang.org/x/sys/unix"
  5. "unsafe"
  6. )
  7. // #include <stdlib.h>
  8. // #include <stdio.h>
  9. // #include <sys/mount.h>
  10. // int Mount(const char *spec, const char *dir, int mflag,
  11. // char *fstype, char *dataptr, int datalen, char *optptr, int optlen) {
  12. // return mount(spec, dir, mflag, fstype, dataptr, datalen, optptr, optlen);
  13. // }
  14. import "C"
  15. func mount(device, target, mType string, flag uintptr, data string) error {
  16. spec := C.CString(device)
  17. dir := C.CString(target)
  18. fstype := C.CString(mType)
  19. _, err := C.Mount(spec, dir, C.int(flag), fstype, nil, 0, nil, 0)
  20. C.free(unsafe.Pointer(spec))
  21. C.free(unsafe.Pointer(dir))
  22. C.free(unsafe.Pointer(fstype))
  23. return err
  24. }
  25. func unmount(target string, flag int) error {
  26. err := unix.Unmount(target, flag)
  27. return err
  28. }