Implement syslog syscall decoder
* linux/dummy.h (sys_syslog): Remove.
* linux/syscall.h (sys_syslog): New prototype.
* system.c (syslog_action_type): New xlat structure.
(sys_syslog): New function.
diff --git a/system.c b/system.c
index 61a614a..5498449 100644
--- a/system.c
+++ b/system.c
@@ -214,6 +214,72 @@
return 0;
}
+enum {
+ SYSLOG_ACTION_CLOSE = 0,
+ SYSLOG_ACTION_OPEN,
+ SYSLOG_ACTION_READ,
+ SYSLOG_ACTION_READ_ALL,
+ SYSLOG_ACTION_READ_CLEAR,
+ SYSLOG_ACTION_CLEAR,
+ SYSLOG_ACTION_CONSOLE_OFF,
+ SYSLOG_ACTION_CONSOLE_ON,
+ SYSLOG_ACTION_CONSOLE_LEVEL,
+ SYSLOG_ACTION_SIZE_UNREAD,
+ SYSLOG_ACTION_SIZE_BUFFER
+};
+
+static const struct xlat syslog_action_type[] = {
+ { SYSLOG_ACTION_CLOSE, "SYSLOG_ACTION_CLOSE" },
+ { SYSLOG_ACTION_OPEN, "SYSLOG_ACTION_OPEN" },
+ { SYSLOG_ACTION_READ, "SYSLOG_ACTION_READ" },
+ { SYSLOG_ACTION_READ_ALL, "SYSLOG_ACTION_READ_ALL" },
+ { SYSLOG_ACTION_READ_CLEAR, "SYSLOG_ACTION_READ_CLEAR" },
+ { SYSLOG_ACTION_CLEAR, "SYSLOG_ACTION_CLEAR" },
+ { SYSLOG_ACTION_CONSOLE_OFF, "SYSLOG_ACTION_CONSOLE_OFF" },
+ { SYSLOG_ACTION_CONSOLE_ON, "SYSLOG_ACTION_CONSOLE_ON" },
+ { SYSLOG_ACTION_CONSOLE_LEVEL, "SYSLOG_ACTION_CONSOLE_LEVEL" },
+ { SYSLOG_ACTION_SIZE_UNREAD, "SYSLOG_ACTION_SIZE_UNREAD" },
+ { SYSLOG_ACTION_SIZE_BUFFER, "SYSLOG_ACTION_SIZE_BUFFER" },
+ { 0, NULL }
+};
+
+int
+sys_syslog(struct tcb *tcp)
+{
+ int type = tcp->u_arg[0];
+
+ if (entering(tcp)) {
+ /* type */
+ printxval(syslog_action_type, type, "SYSLOG_ACTION_???");
+ tprints(", ");
+ }
+
+ switch (type) {
+ case SYSLOG_ACTION_READ:
+ case SYSLOG_ACTION_READ_ALL:
+ case SYSLOG_ACTION_READ_CLEAR:
+ if (entering(tcp))
+ return 0;
+ break;
+ default:
+ if (entering(tcp)) {
+ tprintf("%#lx, %lu",
+ tcp->u_arg[1], tcp->u_arg[2]);
+ }
+ return 0;
+ }
+
+ /* bufp */
+ if (syserror(tcp))
+ tprintf("%#lx", tcp->u_arg[1]);
+ else
+ printstr(tcp, tcp->u_arg[1], tcp->u_rval);
+ /* len */
+ tprintf(", %d", (int) tcp->u_arg[2]);
+
+ return 0;
+}
+
#include <linux/reboot.h>
static const struct xlat bootflags1[] = {
{ LINUX_REBOOT_MAGIC1, "LINUX_REBOOT_MAGIC1" },