X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=tests%2Fust-multi-test%2Fust-multi-test.c;h=161cc27a9de2fe036933465be5bc12ce0592908b;hb=b72687b85f4f07a9b63be329ad1fe95b36d24900;hp=965c34cd0acbcaec18ba589b5f2923b95bf60f40;hpb=1a34b35bd722069b483d2b5030f8ddc65e4573c2;p=lttng-ust.git diff --git a/tests/ust-multi-test/ust-multi-test.c b/tests/ust-multi-test/ust-multi-test.c index 965c34cd..161cc27a 100644 --- a/tests/ust-multi-test/ust-multi-test.c +++ b/tests/ust-multi-test/ust-multi-test.c @@ -20,24 +20,25 @@ #define _LARGEFILE64_SOURCE #define _GNU_SOURCE +#include #include +#include +#include +#include +#include #include #include #include -#include -#include -#include -#include -#include +#include #include +#include #include -#include -#include -#include +#include +#include +#include +#include #include #include -#include -#include #include #include @@ -258,7 +259,7 @@ int consume_stream(struct lttng_ust_shm_handle *handle, int cpu, char *outfile) } read_size = lib_ring_buffer_get_read_data_size( &chan->backend.config, buf, handle); - read_size = PAGE_ALIGN(read_size); + read_size = LTTNG_UST_PAGE_ALIGN(read_size); ptr = lib_ring_buffer_read_offset_address( &buf->backend, 0, handle); printf("WRITE: copy %lu bytes\n", read_size); @@ -638,11 +639,19 @@ error: int update_futex(int fd, int active) { - size_t mmap_size = sysconf(_SC_PAGE_SIZE); + long page_size; char *wait_shm_mmap; int ret; - wait_shm_mmap = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE, + page_size = sysconf(_SC_PAGE_SIZE); + if (page_size <= 0) { + if (!page_size) { + errno = EINVAL; + } + perror("Error in sysconf(_SC_PAGE_SIZE)"); + goto error; + } + wait_shm_mmap = mmap(NULL, page_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (wait_shm_mmap == MAP_FAILED) { perror("mmap"); @@ -651,12 +660,15 @@ int update_futex(int fd, int active) if (active) { uatomic_set((int32_t *) wait_shm_mmap, 1); - futex_async((int32_t *) wait_shm_mmap, FUTEX_WAKE, - INT_MAX, NULL, NULL, 0); + if (futex_async((int32_t *) wait_shm_mmap, FUTEX_WAKE, + INT_MAX, NULL, NULL, 0) < 0) { + perror("futex_async"); + goto error; + } } else { uatomic_set((int32_t *) wait_shm_mmap, 0); } - ret = munmap(wait_shm_mmap, mmap_size); + ret = munmap(wait_shm_mmap, page_size); if (ret) { perror("Error unmapping wait shm"); goto error; @@ -699,6 +711,7 @@ int main(int argc, char **argv) int ret, wait_shm_fd; struct sigaction act; mode_t old_umask = 0; + long page_size; set_ulimit(); @@ -731,6 +744,15 @@ int main(int argc, char **argv) return -1; } + page_size = sysconf(_SC_PAGE_SIZE); + if (page_size <= 0) { + if (!page_size) { + errno = EINVAL; + } + perror("Error in sysconf(_SC_PAGE_SIZE)"); + return -1; + } + if (geteuid() == 0) { ret = mkdir(LTTNG_RUNDIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); if (ret && errno != EEXIST) { @@ -738,7 +760,7 @@ int main(int argc, char **argv) return -1; } wait_shm_fd = get_wait_shm(DEFAULT_GLOBAL_APPS_WAIT_SHM_PATH, - sysconf(_SC_PAGE_SIZE), 1); + page_size, 1); if (wait_shm_fd < 0) { perror("global wait shm error"); return -1; @@ -764,7 +786,7 @@ int main(int argc, char **argv) snprintf(local_apps_wait_shm_path, PATH_MAX, DEFAULT_HOME_APPS_WAIT_SHM_PATH, getuid()); wait_shm_fd = get_wait_shm(local_apps_wait_shm_path, - sysconf(_SC_PAGE_SIZE), 0); + page_size, 0); if (wait_shm_fd < 0) { perror("local wait shm error"); return -1; @@ -872,6 +894,7 @@ end: ret = system(cmd); if (ret < 0) { printf("Unable to clean %s\n", home_rundir); + return -1; } }