aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/csource/generated.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-08-30 21:10:38 -0700
committerDmitry Vyukov <dvyukov@google.com>2018-08-30 21:45:04 -0700
commita4718693a3d9fcabb02299b2ec07c19d8208c539 (patch)
tree4646830d734816c5d6ab7bd5f71338ce3f9b1b54 /pkg/csource/generated.go
parent4239b99abbcccac9104facbf2b040a5af4ffe1b1 (diff)
sys/linux: add syz_execute_func
The function executes random code. Update #310
Diffstat (limited to 'pkg/csource/generated.go')
-rw-r--r--pkg/csource/generated.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go
index 49fc2ffe8..714269f1a 100644
--- a/pkg/csource/generated.go
+++ b/pkg/csource/generated.go
@@ -349,6 +349,14 @@ static uint16 csum_inet_digest(struct csum_inet* csum)
}
#endif
+#if SYZ_EXECUTOR || __NR_syz_execute_func
+static long syz_execute_func(long text)
+{
+ ((void (*)(void))(text))();
+ return 0;
+}
+#endif
+
#if GOOS_akaros
#include <ros/syscall.h>
@@ -712,13 +720,13 @@ static void event_set(event_t* ev)
if (ev->state)
fail("event already set");
__atomic_store_n(&ev->state, 1, __ATOMIC_RELEASE);
- syscall(SYS_futex, &ev->state, FUTEX_WAKE);
+ syscall(SYS_futex, &ev->state, FUTEX_WAKE | FUTEX_PRIVATE_FLAG);
}
static void event_wait(event_t* ev)
{
while (!__atomic_load_n(&ev->state, __ATOMIC_ACQUIRE))
- syscall(SYS_futex, &ev->state, FUTEX_WAIT, 0, 0);
+ syscall(SYS_futex, &ev->state, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, 0, 0);
}
static int event_isset(event_t* ev)
@@ -735,7 +743,7 @@ static int event_timedwait(event_t* ev, uint64 timeout)
struct timespec ts;
ts.tv_sec = remain / 1000;
ts.tv_nsec = (remain % 1000) * 1000 * 1000;
- syscall(SYS_futex, &ev->state, FUTEX_WAIT, 0, &ts);
+ syscall(SYS_futex, &ev->state, FUTEX_WAIT | FUTEX_PRIVATE_FLAG, 0, &ts);
if (__atomic_load_n(&ev->state, __ATOMIC_RELAXED))
return 1;
now = current_time_ms();