Tizen_4.0 base
[platform/upstream/docker-engine.git] / integration-cli / daemon / daemon_windows.go
1 package daemon
2
3 import (
4         "fmt"
5         "strconv"
6         "syscall"
7         "unsafe"
8
9         "github.com/go-check/check"
10         "golang.org/x/sys/windows"
11 )
12
13 func openEvent(desiredAccess uint32, inheritHandle bool, name string, proc *windows.LazyProc) (handle syscall.Handle, err error) {
14         namep, _ := syscall.UTF16PtrFromString(name)
15         var _p2 uint32
16         if inheritHandle {
17                 _p2 = 1
18         }
19         r0, _, e1 := proc.Call(uintptr(desiredAccess), uintptr(_p2), uintptr(unsafe.Pointer(namep)))
20         handle = syscall.Handle(r0)
21         if handle == syscall.InvalidHandle {
22                 err = e1
23         }
24         return
25 }
26
27 func pulseEvent(handle syscall.Handle, proc *windows.LazyProc) (err error) {
28         r0, _, _ := proc.Call(uintptr(handle))
29         if r0 != 0 {
30                 err = syscall.Errno(r0)
31         }
32         return
33 }
34
35 // SignalDaemonDump sends a signal to the daemon to write a dump file
36 func SignalDaemonDump(pid int) {
37         modkernel32 := windows.NewLazySystemDLL("kernel32.dll")
38         procOpenEvent := modkernel32.NewProc("OpenEventW")
39         procPulseEvent := modkernel32.NewProc("PulseEvent")
40
41         ev := "Global\\docker-daemon-" + strconv.Itoa(pid)
42         h2, _ := openEvent(0x0002, false, ev, procOpenEvent)
43         if h2 == 0 {
44                 return
45         }
46         pulseEvent(h2, procPulseEvent)
47 }
48
49 func signalDaemonReload(pid int) error {
50         return fmt.Errorf("daemon reload not supported")
51 }
52
53 func cleanupExecRoot(c *check.C, execRoot string) {
54 }