Separate qemu_pidfile() into OS specific versions
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
ff753bb9a6
commit
bc4a957c46
21
os-posix.c
21
os-posix.c
@ -361,3 +361,24 @@ int qemu_eventfd(int fds[2])
|
||||
|
||||
return qemu_pipe(fds);
|
||||
}
|
||||
|
||||
int qemu_create_pidfile(const char *filename)
|
||||
{
|
||||
char buffer[128];
|
||||
int len;
|
||||
int fd;
|
||||
|
||||
fd = qemu_open(filename, O_RDWR | O_CREAT, 0600);
|
||||
if (fd == -1) {
|
||||
return -1;
|
||||
}
|
||||
if (lockf(fd, F_TLOCK, 0) == -1) {
|
||||
return -1;
|
||||
}
|
||||
len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
|
||||
if (write(fd, buffer, len) != len) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
24
os-win32.c
24
os-win32.c
@ -240,3 +240,27 @@ void os_pidfile_error(void)
|
||||
{
|
||||
fprintf(stderr, "Could not acquire pid file: %s\n", strerror(errno));
|
||||
}
|
||||
|
||||
int qemu_create_pidfile(const char *filename)
|
||||
{
|
||||
char buffer[128];
|
||||
int len;
|
||||
HANDLE file;
|
||||
OVERLAPPED overlap;
|
||||
BOOL ret;
|
||||
memset(&overlap, 0, sizeof(overlap));
|
||||
|
||||
file = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL,
|
||||
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
|
||||
if (file == INVALID_HANDLE_VALUE) {
|
||||
return -1;
|
||||
}
|
||||
len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
|
||||
ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len,
|
||||
&overlap, NULL);
|
||||
if (ret == 0) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
38
osdep.c
38
osdep.c
@ -73,44 +73,6 @@ int qemu_madvise(void *addr, size_t len, int advice)
|
||||
#endif
|
||||
}
|
||||
|
||||
int qemu_create_pidfile(const char *filename)
|
||||
{
|
||||
char buffer[128];
|
||||
int len;
|
||||
#ifndef _WIN32
|
||||
int fd;
|
||||
|
||||
fd = qemu_open(filename, O_RDWR | O_CREAT, 0600);
|
||||
if (fd == -1)
|
||||
return -1;
|
||||
|
||||
if (lockf(fd, F_TLOCK, 0) == -1)
|
||||
return -1;
|
||||
|
||||
len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
|
||||
if (write(fd, buffer, len) != len)
|
||||
return -1;
|
||||
#else
|
||||
HANDLE file;
|
||||
OVERLAPPED overlap;
|
||||
BOOL ret;
|
||||
memset(&overlap, 0, sizeof(overlap));
|
||||
|
||||
file = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL,
|
||||
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
|
||||
if (file == INVALID_HANDLE_VALUE)
|
||||
return -1;
|
||||
|
||||
len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
|
||||
ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len,
|
||||
&overlap, NULL);
|
||||
if (ret == 0)
|
||||
return -1;
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Opens a file with FD_CLOEXEC set
|
||||
|
Loading…
Reference in New Issue
Block a user