Introduce format string for pid_t
BeOS and Haiku on i386 use long for 32-bit types, including pid_t. Using %d with pid_t therefore results in a warning. Unfortunately POSIX:2008 does not define a PRId* string for pid_t. In some places pid_t was previously casted to long and %ld hardcoded. The predecessor of this patch added another upcast for the simpletrace filename but was not applied to date. Since new uses of pid_t with %d keep creeping in, let's instead define an OS-dependent format string and use that consistently. Cc: Stefan Hajnoczi <stefanha@gmail.com> Cc: Blue Swirl <blauwirbel@gmail.com> Cc: Ingo Weinhold <ingo_weinhold@gmx.de> Cc: Gleb Natapov <gleb@redhat.com> Signed-off-by: Andreas Färber <andreas.faerber@web.de> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
1e36f6a5b5
commit
953ffe0f93
2
configure
vendored
2
configure
vendored
@ -3041,7 +3041,7 @@ if test "$trace_backend" = "simple"; then
|
|||||||
fi
|
fi
|
||||||
# Set the appropriate trace file.
|
# Set the appropriate trace file.
|
||||||
if test "$trace_backend" = "simple"; then
|
if test "$trace_backend" = "simple"; then
|
||||||
trace_file="\"$trace_file-%u\""
|
trace_file="\"$trace_file-\" FMT_pid"
|
||||||
fi
|
fi
|
||||||
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
|
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
|
||||||
echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
|
echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
|
||||||
|
@ -368,7 +368,7 @@ int qemu_create_pidfile(const char *filename)
|
|||||||
if (lockf(fd, F_TLOCK, 0) == -1) {
|
if (lockf(fd, F_TLOCK, 0) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
|
len = snprintf(buffer, sizeof(buffer), FMT_pid "\n", getpid());
|
||||||
if (write(fd, buffer, len) != len) {
|
if (write(fd, buffer, len) != len) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -258,7 +258,7 @@ int qemu_create_pidfile(const char *filename)
|
|||||||
if (file == INVALID_HANDLE_VALUE) {
|
if (file == INVALID_HANDLE_VALUE) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
|
len = snprintf(buffer, sizeof(buffer), FMT_pid "\n", getpid());
|
||||||
ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len,
|
ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len,
|
||||||
&overlap, NULL);
|
&overlap, NULL);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
|
6
osdep.h
6
osdep.h
@ -128,6 +128,12 @@ void qemu_vfree(void *ptr);
|
|||||||
|
|
||||||
int qemu_madvise(void *addr, size_t len, int advice);
|
int qemu_madvise(void *addr, size_t len, int advice);
|
||||||
|
|
||||||
|
#if defined(__HAIKU__) && defined(__i386__)
|
||||||
|
#define FMT_pid "%ld"
|
||||||
|
#else
|
||||||
|
#define FMT_pid "%d"
|
||||||
|
#endif
|
||||||
|
|
||||||
int qemu_create_pidfile(const char *filename);
|
int qemu_create_pidfile(const char *filename);
|
||||||
int qemu_get_thread_id(void);
|
int qemu_get_thread_id(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user