From d437a24e0c372f646e02949f8e36f0c3a6b8c99f Mon Sep 17 00:00:00 2001
From: Glauber Costa <glommer@cloudius-systems.com>
Date: Wed, 9 Apr 2014 12:11:27 +0400
Subject: [PATCH] linux: make write syscall available

The jemalloc memory allocator likes to bypass the libc when calling write, so
it calls the syscall directly. Let's make write available through this interface
as well.

Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Glauber Costa <glommer@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
---
 linux.cc | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/linux.cc b/linux.cc
index e37cc5f5a..f1859cc3a 100644
--- a/linux.cc
+++ b/linux.cc
@@ -74,6 +74,19 @@ int futex(int *uaddr, int op, int val, const struct timespec *timeout,
 long syscall(long number, ...)
 {
     switch (number) {
+    case __NR_write: {
+        va_list args;
+        int arg1;
+        const void *arg2;
+        size_t arg3;
+        va_start(args, number);
+        arg1 = va_arg(args, typeof(arg1));
+        arg2 = va_arg(args, typeof(arg2));
+        arg3 = va_arg(args, typeof(arg3));
+        va_end(args);
+
+        return write(arg1, arg2, arg3);
+    }
     case __NR_gettid: return gettid();
     case __NR_clock_gettime: {
         va_list args;
-- 
GitLab