mirror of
https://github.com/qemu/qemu.git
synced 2025-08-15 05:06:56 +00:00
oslib-posix: Fix compiler warning and some data types
gcc warning: /qemu/util/oslib-posix.c:304:11: error: variable ‘addr’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] Fix also some related data types: numpages, hpagesize are used as pointer offset. Always use size_t for them and also for the derived numpages_per_thread and size_per_thread. Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Stefan Weil <sw@weilnetz.de> Message-id: 20171016202912.1117-1-sw@weilnetz.de Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
063833a6ec
commit
e947d47da0
@ -59,8 +59,8 @@
|
|||||||
|
|
||||||
struct MemsetThread {
|
struct MemsetThread {
|
||||||
char *addr;
|
char *addr;
|
||||||
uint64_t numpages;
|
size_t numpages;
|
||||||
uint64_t hpagesize;
|
size_t hpagesize;
|
||||||
QemuThread pgthread;
|
QemuThread pgthread;
|
||||||
sigjmp_buf env;
|
sigjmp_buf env;
|
||||||
};
|
};
|
||||||
@ -301,11 +301,7 @@ static void sigbus_handler(int signal)
|
|||||||
static void *do_touch_pages(void *arg)
|
static void *do_touch_pages(void *arg)
|
||||||
{
|
{
|
||||||
MemsetThread *memset_args = (MemsetThread *)arg;
|
MemsetThread *memset_args = (MemsetThread *)arg;
|
||||||
char *addr = memset_args->addr;
|
|
||||||
uint64_t numpages = memset_args->numpages;
|
|
||||||
uint64_t hpagesize = memset_args->hpagesize;
|
|
||||||
sigset_t set, oldset;
|
sigset_t set, oldset;
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
/* unblock SIGBUS */
|
/* unblock SIGBUS */
|
||||||
sigemptyset(&set);
|
sigemptyset(&set);
|
||||||
@ -315,6 +311,10 @@ static void *do_touch_pages(void *arg)
|
|||||||
if (sigsetjmp(memset_args->env, 1)) {
|
if (sigsetjmp(memset_args->env, 1)) {
|
||||||
memset_thread_failed = true;
|
memset_thread_failed = true;
|
||||||
} else {
|
} else {
|
||||||
|
char *addr = memset_args->addr;
|
||||||
|
size_t numpages = memset_args->numpages;
|
||||||
|
size_t hpagesize = memset_args->hpagesize;
|
||||||
|
size_t i;
|
||||||
for (i = 0; i < numpages; i++) {
|
for (i = 0; i < numpages; i++) {
|
||||||
/*
|
/*
|
||||||
* Read & write back the same value, so we don't
|
* Read & write back the same value, so we don't
|
||||||
@ -351,7 +351,8 @@ static inline int get_memset_num_threads(int smp_cpus)
|
|||||||
static bool touch_all_pages(char *area, size_t hpagesize, size_t numpages,
|
static bool touch_all_pages(char *area, size_t hpagesize, size_t numpages,
|
||||||
int smp_cpus)
|
int smp_cpus)
|
||||||
{
|
{
|
||||||
uint64_t numpages_per_thread, size_per_thread;
|
size_t numpages_per_thread;
|
||||||
|
size_t size_per_thread;
|
||||||
char *addr = area;
|
char *addr = area;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user