projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: LPOLLHUP and LPOLLERR when there is still data in pipe/socket
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
syscall.c
diff --git
a/src/bin/lttng-sessiond/syscall.c
b/src/bin/lttng-sessiond/syscall.c
index b4f2e1eca92f2fb726aa774f8bc94f384bc2f000..43c0a2010225a804763b6843bd7329a44c542726 100644
(file)
--- a/
src/bin/lttng-sessiond/syscall.c
+++ b/
src/bin/lttng-sessiond/syscall.c
@@
-16,6
+16,7
@@
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <common/bitfield.h>
#include <common/common.h>
#include <common/kernel-ctl/kernel-ctl.h>
#include <common/bitfield.h>
#include <common/common.h>
#include <common/kernel-ctl/kernel-ctl.h>
@@
-72,7
+73,7
@@
int syscall_init_table(void)
}
while (fscanf(fp,
}
while (fscanf(fp,
- "syscall { index = %
l
u; \
+ "syscall { index = %
z
u; \
name = %" XSTR(SYSCALL_NAME_LEN) "[^;]; \
bitness = %u; };\n",
&index, name, &bitness) == 3) {
name = %" XSTR(SYSCALL_NAME_LEN) "[^;]; \
bitness = %u; };\n",
&index, name, &bitness) == 3) {
@@
-404,11
+405,15
@@
ssize_t syscall_list_channel(struct ltt_kernel_channel *kchan,
events = new_events;
}
events = new_events;
}
+ rcu_read_lock();
ksyscall = lookup_syscall(syscalls_ht, syscall_table[i].name);
if (ksyscall) {
update_event_syscall_bitness(events, i, ksyscall->index);
ksyscall = lookup_syscall(syscalls_ht, syscall_table[i].name);
if (ksyscall) {
update_event_syscall_bitness(events, i, ksyscall->index);
+ rcu_read_unlock();
continue;
}
continue;
}
+ ksyscall = NULL;
+ rcu_read_unlock();
ret = add_syscall_to_ht(syscalls_ht, i, count);
if (ret < 0) {
ret = add_syscall_to_ht(syscalls_ht, i, count);
if (ret < 0) {
@@
-419,7
+424,7
@@
ssize_t syscall_list_channel(struct ltt_kernel_channel *kchan,
strncpy(events[count].name, syscall_table[i].name,
sizeof(events[count].name));
events[count].enabled = 1;
strncpy(events[count].name, syscall_table[i].name,
sizeof(events[count].name));
events[count].enabled = 1;
- events[count].type = LTTNG_
KERNEL
_SYSCALL;
+ events[count].type = LTTNG_
EVENT
_SYSCALL;
count++;
}
count++;
}
@@
-428,7
+433,10
@@
ssize_t syscall_list_channel(struct ltt_kernel_channel *kchan,
return count;
error:
return count;
error:
+ rcu_read_lock();
destroy_syscall_ht(syscalls_ht);
destroy_syscall_ht(syscalls_ht);
+ rcu_read_unlock();
+
free(events);
return ret;
}
free(events);
return ret;
}
This page took
0.02765 seconds
and
4
git commands to generate.