diff options
author | guanglei <guanglei> | 2006-06-15 07:01:42 +0000 |
---|---|---|
committer | guanglei <guanglei> | 2006-06-15 07:01:42 +0000 |
commit | c1cb865e2bd561644cad1259dfeecdc800bd7a60 (patch) | |
tree | 4a615941a269b159ca2a4696b7ce880c1ae0ab28 | |
parent | 6defb2afaf608c8913c8ddaf4828d0ef84feb90e (diff) | |
download | systemtap-steved-c1cb865e2bd561644cad1259dfeecdc800bd7a60.tar.gz systemtap-steved-c1cb865e2bd561644cad1259dfeecdc800bd7a60.tar.xz systemtap-steved-c1cb865e2bd561644cad1259dfeecdc800bd7a60.zip |
added io syscall event hooks.
the io syscall hook differs with syscall hook since it will
provide all the available info of function parameters instead
of logging only the syscall name. Useful to trace the detail
behavour of io related syscalls
-rw-r--r-- | tapset/LKET/Changelog | 7 | ||||
-rwxr-xr-x | tapset/LKET/hookid_defs.stp | 155 | ||||
-rwxr-xr-x | tapset/LKET/iosyscall.stp | 383 | ||||
-rwxr-xr-x | tapset/LKET/register_event.stp | 126 |
4 files changed, 651 insertions, 20 deletions
diff --git a/tapset/LKET/Changelog b/tapset/LKET/Changelog index 8680b91a..0aff69b6 100644 --- a/tapset/LKET/Changelog +++ b/tapset/LKET/Changelog @@ -1,3 +1,10 @@ +2006-06-15 Li Guanglei <guanglei@cn.ibm.com> + + * iosyscall.stp: new event hooks for io related syscalls + * hookid_defs.stp: add the necessary IDs for iosyscall event hooks + * register_event.stp: add corresponding event register calls + of the newly added io syscall event hooks + 2006-06-09 Li Guanglei <guanglei@cn.ibm.com> * *.stp: New design of making user able to append extra trace data. diff --git a/tapset/LKET/hookid_defs.stp b/tapset/LKET/hookid_defs.stp index 70801484..9f919938 100755 --- a/tapset/LKET/hookid_defs.stp +++ b/tapset/LKET/hookid_defs.stp @@ -33,7 +33,61 @@ global /* network device */ GROUP_NETDEV, - HOOKID_NETDEV_RECEIVE, HOOKID_NETDEV_TRANSMIT + HOOKID_NETDEV_RECEIVE, HOOKID_NETDEV_TRANSMIT, + + /* io related syscall */ + GROUP_IOSYSCALL, + + HOOKID_IOSYSCALL_OPEN_ENTRY, + HOOKID_IOSYSCALL_OPEN_RETURN, + + HOOKID_IOSYSCALL_CLOSE_ENTRY, + HOOKID_IOSYSCALL_CLOSE_RETURN, + + HOOKID_IOSYSCALL_READ_ENTRY, + HOOKID_IOSYSCALL_READ_RETURN, + + HOOKID_IOSYSCALL_WRITE_ENTRY, + HOOKID_IOSYSCALL_WRITE_RETURN, + + HOOKID_IOSYSCALL_READV_ENTRY, + HOOKID_IOSYSCALL_READV_RETURN, + + HOOKID_IOSYSCALL_WRITEV_ENTRY, + HOOKID_IOSYSCALL_WRITEV_RETURN, + + HOOKID_IOSYSCALL_PREAD64_ENTRY, + HOOKID_IOSYSCALL_PREAD64_RETURN, + + HOOKID_IOSYSCALL_PWRITE64_ENTRY, + HOOKID_IOSYSCALL_PWRITE64_RETURN, + + HOOKID_IOSYSCALL_READAHEAD_ENTRY, + HOOKID_IOSYSCALL_READAHEAD_RETURN, + + HOOKID_IOSYSCALL_SENDFILE_ENTRY, + HOOKID_IOSYSCALL_SENDFILE_RETURN, + + HOOKID_IOSYSCALL_SENDFILE64_ENTRY, + HOOKID_IOSYSCALL_SENDFILE64_RETURN, + + HOOKID_IOSYSCALL_LSEEK_ENTRY, + HOOKID_IOSYSCALL_LSEEK_RETURN, + + HOOKID_IOSYSCALL_LLSEEK_ENTRY, + HOOKID_IOSYSCALL_LLSEEK_RETURN, + + HOOKID_IOSYSCALL_SYNC_ENTRY, + HOOKID_IOSYSCALL_SYNC_RETURN, + + HOOKID_IOSYSCALL_FSYNC_ENTRY, + HOOKID_IOSYSCALL_FSYNC_RETURN, + + HOOKID_IOSYSCALL_FDATASYNC_ENTRY, + HOOKID_IOSYSCALL_FDATASYNC_RETURN, + + HOOKID_IOSYSCALL_FLOCK_ENTRY, + HOOKID_IOSYSCALL_FLOCK_RETURN %{ /* used in embedded c codes */ @@ -46,6 +100,7 @@ int _GROUP_TASK = 5; int _GROUP_SCSI = 6; int _GROUP_PAGEFAULT = 7; int _GROUP_NETDEV = 8; +int _GROUP_IOSYSCALL = 9; /* hookIDs defined inside each group */ int _HOOKID_REGSYSEVT = 1; @@ -75,6 +130,54 @@ int _HOOKID_PAGEFAULT = 1; int _HOOKID_NETDEV_RECEIVE = 1; int _HOOKID_NETDEV_TRANSMIT = 2; +int _HOOKID_IOSYSCALL_OPEN_ENTRY = 1; +int _HOOKID_IOSYSCALL_OPEN_RETURN = 2; + +int _HOOKID_IOSYSCALL_CLOSE_ENTRY = 3; +int _HOOKID_IOSYSCALL_CLOSE_RETURN = 4; + +int _HOOKID_IOSYSCALL_READ_ENTRY = 5; +int _HOOKID_IOSYSCALL_READ_RETURN = 6; + +int _HOOKID_IOSYSCALL_WRITE_ENTRY = 7; +int _HOOKID_IOSYSCALL_WRITE_RETURN = 8; + +int _HOOKID_IOSYSCALL_READV_ENTRY = 9; +int _HOOKID_IOSYSCALL_READV_RETURN = 10; + +int _HOOKID_IOSYSCALL_WRITEV_ENTRY = 11; +int _HOOKID_IOSYSCALL_WRITEV_RETURN = 12; + +int _HOOKID_IOSYSCALL_PREAD64_ENTRY = 13; +int _HOOKID_IOSYSCALL_PREAD64_RETURN = 14; + +int _HOOKID_IOSYSCALL_PWRITE64_ENTRY = 15; +int _HOOKID_IOSYSCALL_PWRITE64_RETURN = 16; + +int _HOOKID_IOSYSCALL_READAHEAD_ENTRY = 17; +int _HOOKID_IOSYSCALL_READAHEAD_RETURN = 18; + +int _HOOKID_IOSYSCALL_SENDFILE_ENTRY = 19; +int _HOOKID_IOSYSCALL_SENDFILE_RETURN = 20; + +int _HOOKID_IOSYSCALL_LSEEK_ENTRY = 21; +int _HOOKID_IOSYSCALL_LSEEK_RETURN = 22; + +int _HOOKID_IOSYSCALL_LLSEEK_ENTRY = 23; +int _HOOKID_IOSYSCALL_LLSEEK_RETURN = 24; + +int _HOOKID_IOSYSCALL_SYNC_ENTRY = 25; +int _HOOKID_IOSYSCALL_SYNC_RETURN = 26; + +int _HOOKID_IOSYSCALL_FSYNC_ENTRY = 27; +int _HOOKID_IOSYSCALL_FSYNC_RETURN = 28; + +int _HOOKID_IOSYSCALL_FDATASYNC_ENTRY = 29; +int _HOOKID_IOSYSCALL_FDATASYNC_RETURN = 30; + +int _HOOKID_IOSYSCALL_FLOCK_ENTRY = 31; +int _HOOKID_IOSYSCALL_FLOCK_RETURN = 32; + %} function hookid_init() @@ -113,6 +216,56 @@ function hookid_init() GROUP_NETDEV = 8 HOOKID_NETDEV_RECEIVE = 1 HOOKID_NETDEV_TRANSMIT = 2 + + GROUP_IOSYSCALL = 9 + + HOOKID_IOSYSCALL_OPEN_ENTRY = 1 + HOOKID_IOSYSCALL_OPEN_RETURN = 2 + + HOOKID_IOSYSCALL_CLOSE_ENTRY = 3 + HOOKID_IOSYSCALL_CLOSE_RETURN = 4 + + HOOKID_IOSYSCALL_READ_ENTRY = 5 + HOOKID_IOSYSCALL_READ_RETURN = 6 + + HOOKID_IOSYSCALL_WRITE_ENTRY = 7 + HOOKID_IOSYSCALL_WRITE_RETURN = 8 + + HOOKID_IOSYSCALL_READV_ENTRY = 9 + HOOKID_IOSYSCALL_READV_RETURN = 10 + + HOOKID_IOSYSCALL_WRITEV_ENTRY = 11 + HOOKID_IOSYSCALL_WRITEV_RETURN = 12 + + HOOKID_IOSYSCALL_PREAD64_ENTRY = 13 + HOOKID_IOSYSCALL_PREAD64_RETURN = 14 + + HOOKID_IOSYSCALL_PWRITE64_ENTRY = 15 + HOOKID_IOSYSCALL_PWRITE64_RETURN = 16 + + HOOKID_IOSYSCALL_READAHEAD_ENTRY = 17 + HOOKID_IOSYSCALL_READAHEAD_RETURN = 18 + + HOOKID_IOSYSCALL_SENDFILE_ENTRY = 19 + HOOKID_IOSYSCALL_SENDFILE_RETURN = 20 + + HOOKID_IOSYSCALL_LSEEK_ENTRY = 21 + HOOKID_IOSYSCALL_LSEEK_RETURN = 22 + + HOOKID_IOSYSCALL_LLSEEK_ENTRY = 23 + HOOKID_IOSYSCALL_LLSEEK_RETURN = 24 + + HOOKID_IOSYSCALL_SYNC_ENTRY = 25 + HOOKID_IOSYSCALL_SYNC_RETURN = 26 + + HOOKID_IOSYSCALL_FSYNC_ENTRY = 27 + HOOKID_IOSYSCALL_FSYNC_RETURN = 28 + + HOOKID_IOSYSCALL_FDATASYNC_ENTRY = 29 + HOOKID_IOSYSCALL_FDATASYNC_RETURN = 30 + + HOOKID_IOSYSCALL_FLOCK_ENTRY = 31 + HOOKID_IOSYSCALL_FLOCK_RETURN = 32 } diff --git a/tapset/LKET/iosyscall.stp b/tapset/LKET/iosyscall.stp new file mode 100755 index 00000000..527aaeeb --- /dev/null +++ b/tapset/LKET/iosyscall.stp @@ -0,0 +1,383 @@ +// Copyright (C) 2006 IBM Corp. +// +// This file is part of systemtap, and is free software. You can +// redistribute it and/or modify it under the terms of the GNU General +// Public License (GPL); either version 2, or (at your option) any +// later version. + +probe addevent.iosyscall + = addevent.iosyscall.entry, + addevent.iosyscall.return +{} + +probe addevent.iosyscall.entry + += _addevent.iosyscall.entry +{ + update_record() +} + +probe addevent.iosyscall.return + += _addevent.iosyscall.return +{ + update_record() +} + + +probe _addevent.iosyscall.entry + = syscall.open, + syscall.close, + syscall.read, + syscall.write, + syscall.readv, + syscall.writev, + syscall.pread64, + syscall.pwrite64, + syscall.readahead, + syscall.sendfile, + syscall.lseek, + syscall.llseek, + syscall.sync, + syscall.fsync, + syscall.fdatasync, + syscall.flock +{ + dummy_c_function() /* used to prevent over-optimization */ +} + +probe _addevent.iosyscall.return + = syscall.open.return, + syscall.close.return, + syscall.read.return, + syscall.write.return, + syscall.readv.return, + syscall.writev.return, + syscall.pread64.return, + syscall.pwrite64.return, + syscall.readahead.return, + syscall.sendfile.return, + syscall.lseek.return, + syscall.llseek.return, + syscall.sync.return, + syscall.fsync.return, + syscall.fdatasync.return, + syscall.flock.return +{ + dummy_c_function() /* used to prevent over-optimization */ +} + + +function dummy_c_function() +%{ +%} + +probe syscall.open +{ + if(filter_by_pid() == 1 ) + log_iosyscall_open(filename, flags, mode) +} + +probe syscall.open.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_OPEN_RETURN, retstr) +} + +function log_iosyscall_open(filename:string, flags:long, mode:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, _HOOKID_IOSYSCALL_OPEN_ENTRY, + "%0s%4b%4b", THIS->filename, THIS->flags, + THIS->mode); +%} + +function log_iosyscall_return(var_id:long, retstr:string) +%{ + _lket_trace(_GROUP_IOSYSCALL, THIS->var_id, "%0s", THIS->retstr); +%} + +probe syscall.close +{ + if(filter_by_pid() == 1 ) + log_iosyscall_close(fd) +} + +probe syscall.close.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_CLOSE_RETURN, retstr) +} + + +function log_iosyscall_close(fd:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, _HOOKID_IOSYSCALL_CLOSE_ENTRY, + "%8b", THIS->fd); +%} + +probe syscall.read +{ + if(filter_by_pid() == 1 ) + log_iosyscall_read_write(HOOKID_IOSYSCALL_READ_ENTRY, fd, + buf_uaddr, count) +} + +probe syscall.read.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_READ_RETURN, retstr) +} + +probe syscall.write +{ + if(filter_by_pid() == 1 ) + log_iosyscall_read_write(HOOKID_IOSYSCALL_WRITE_ENTRY, fd, + buf_uaddr, count) +} + +probe syscall.write.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_WRITE_RETURN, retstr) +} + +function log_iosyscall_read_write(var_id:long, fd:long, buf_uaddr:long, + count:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, THIS->var_id, "%8b%8b%8b", + THIS->fd, THIS->buf_uaddr, THIS->count); +%} + +probe syscall.readv +{ + if(filter_by_pid() == 1 ) + log_iosyscall_readv_writev(HOOKID_IOSYSCALL_READV_ENTRY, + fd, vector_uaddr, count) +} + +probe syscall.readv.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_READV_RETURN, retstr) +} + +probe syscall.writev +{ + if(filter_by_pid() == 1 ) + log_iosyscall_readv_writev(HOOKID_IOSYSCALL_WRITEV_ENTRY, + fd, vector_uaddr, count) +} + +probe syscall.writev.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_WRITEV_RETURN, retstr) +} + +function log_iosyscall_readv_writev(var_id:long, fd:long, + vector_uaddr:long, count:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, THIS->var_id, "%8b%8b%8b", + THIS->fd, THIS->vector_uaddr, THIS->count); +%} + +probe syscall.pread64 +{ + if(filter_by_pid() == 1 ) + log_iosyscall_pread64_pwrite64(HOOKID_IOSYSCALL_PREAD64_ENTRY, + fd, buf_uaddr, count, offset) +} + +probe syscall.pread64.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_PREAD64_RETURN, retstr) +} + +probe syscall.pwrite64 +{ + if(filter_by_pid() == 1 ) + log_iosyscall_pread64_pwrite64(HOOKID_IOSYSCALL_PWRITE64_ENTRY, + fd, buf_uaddr, count, offset); +} + +probe syscall.pwrite64.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_PWRITE64_RETURN, retstr) +} + +function log_iosyscall_pread64_pwrite64(var_id:long, fd:long, + buf_uaddr:long, count:long, offset:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, THIS->var_id, "%8b%8b%8b%8b", + THIS->fd, THIS->buf_uaddr, THIS->count, THIS->offset); +%} + +probe syscall.readahead +{ + if(filter_by_pid() == 1 ) + log_iosyscall_readahead(fd, offset, count) +} + +probe syscall.readahead.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_READAHEAD_RETURN, retstr) +} + + +function log_iosyscall_readahead(fd:long, offset:long,count:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, _HOOKID_IOSYSCALL_READAHEAD_ENTRY, + "%8b%8b%8b", THIS->fd, THIS->offset, THIS->count); +%} + +probe syscall.sendfile +{ + if(filter_by_pid() == 1 ) + log_iosyscall_sendfile(HOOKID_IOSYSCALL_SENDFILE_ENTRY, + out_fd, in_fd, offset_uaddr, count) +} + +probe syscall.sendfile.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_SENDFILE_RETURN, retstr) +} + +function log_iosyscall_sendfile(var_id:long, out_fd:long, in_fd:long, + offset_uaddr:long, count:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, THIS->var_id, "%8b%8b%8b%8b", + THIS->out_fd, THIS->in_fd, THIS->offset_uaddr, + THIS->count); +%} + +probe syscall.lseek +{ + if(filter_by_pid() == 1 ) + log_iosyscall_lseek(fildes, offset, whence) +} + +probe syscall.lseek.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_LSEEK_RETURN, retstr) +} + +function log_iosyscall_lseek(fd:long, offset:long, whence:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, _HOOKID_IOSYSCALL_LSEEK_ENTRY, + "%8b%8b%1b", THIS->fd, THIS->offset, THIS->whence); +%} + +probe syscall.llseek +{ + if(filter_by_pid() == 1 ) + log_iosyscall_llseek(fd, offset_high, offset_low, result_uaddr, + whence) +} + +probe syscall.llseek.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_LLSEEK_RETURN, retstr) +} + +function log_iosyscall_llseek(fd:long, offset_high:long, offset_low:long, + result_uaddr:long, whence:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, _HOOKID_IOSYSCALL_LLSEEK_ENTRY, + "%8b%8b%8b%8b%1b", THIS->fd, THIS->offset_high, + THIS->offset_low, THIS->result_uaddr, THIS->whence); +%} + +probe syscall.sync +{ + if(filter_by_pid() == 1 ) + log_iosyscall_sync() +} + +probe syscall.sync.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_SYNC_RETURN, retstr) +} + +function log_iosyscall_sync() +%{ + struct timeval tv; + do_gettimeofday(&tv); +#if defined(ASCII_TRACE) + _stp_printf("%d%d%d%d%d%d%d%d", _GROUP_IOSYSCALL, + _HOOKID_IOSYSCALL_SYNC_ENTRY, tv.tv_sec, tv.tv_usec, + current->tgid, current->parent->pid, current->pid, + current->thread_info->cpu); + +#else + _stp_printf("%2b%2n%1b%1b%4b%4b%4b%4b%4b%1b", (_FMT_)0, + (_FMT_)_GROUP_IOSYSCALL, (_FMT_)_HOOKID_IOSYSCALL_SYNC_ENTRY, + (_FMT_)tv.tv_sec, (_FMT_)tv.tv_usec, (_FMT_)current->tgid, + (_FMT_)current->parent->pid, (_FMT_)current->pid, + (_FMT_)current->thread_info->cpu); +#endif + +%} + +probe syscall.fsync +{ + if(filter_by_pid() == 1 ) + log_iosyscall_fsync(HOOKID_IOSYSCALL_FSYNC_ENTRY, fd) +} + +probe syscall.fsync.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_FSYNC_RETURN, retstr) +} + +probe syscall.fdatasync +{ + if(filter_by_pid() == 1 ) + log_iosyscall_fsync(HOOKID_IOSYSCALL_FDATASYNC_ENTRY, fd) +} + +probe syscall.fdatasync.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_FDATASYNC_RETURN, retstr) +} + +function log_iosyscall_fsync(var_id:long, fd:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, THIS->var_id, "%8b", THIS->fd); +%} + +probe syscall.flock +{ + if(filter_by_pid() == 1 ) + log_iosyscall_flock(fd, operation) +} + +probe syscall.flock.return +{ + if(filter_by_pid() == 1 ) + log_iosyscall_return(HOOKID_IOSYSCALL_FLOCK_RETURN, retstr) +} + +function log_iosyscall_flock(fd:long, operation:long) +%{ + _lket_trace(_GROUP_IOSYSCALL, _HOOKID_IOSYSCALL_FLOCK_ENTRY, + "%8b%4b", THIS->fd, THIS->operation); +%} + +/* + +fs: +newfstat, newlstat, newstat,pipe,poll,select,readlink,rename,rmdir,symlink,, +truncate,ftruncate,unlink,chmod,chown,dup,dup2,fchdir,fchmod,fchown,fcntl, +fstatfs,link,mkdir, + +aio: +io_cancel,io_destroy,io_getevents,io_setup,io_submit, + +*/ diff --git a/tapset/LKET/register_event.stp b/tapset/LKET/register_event.stp index 3150bf51..76b6d6f2 100755 --- a/tapset/LKET/register_event.stp +++ b/tapset/LKET/register_event.stp @@ -11,7 +11,7 @@ global usr_evt_name, usr_evt_fmt %{ #define _MAXGROUPID 20 -#define _MAXHOOKID 20 +#define _MAXHOOKID 40 int get_fmtcode(char *fmt) { @@ -102,7 +102,8 @@ function register_event(grpid:long, hookid:long, evt_type:long, fmt:string, name } if(fmt!=NULL || name != NULL) { - _stp_warn("unpaired types/names\n"); + _stp_warn("unpaired types/names, grpid:%d, hookid:%d\n", + THIS->grpid, THIS->hookid); _stp_exit(); } @@ -117,47 +118,134 @@ function register_event(grpid:long, hookid:long, evt_type:long, fmt:string, name function register_sys_events() { - register_sys_event(GROUP_SYSCALL, HOOKID_SYSCALL_ENTRY, "STRING", "Syscall") - register_sys_event(GROUP_SYSCALL, HOOKID_SYSCALL_RETURN, "STRING", "Syscall") + register_sys_event(GROUP_SYSCALL, HOOKID_SYSCALL_ENTRY, "STRING", "syscall") + register_sys_event(GROUP_SYSCALL, HOOKID_SYSCALL_RETURN, "STRING", "syscall") register_sys_event(GROUP_PROCESS, HOOKID_PROCESS_SNAPSHOT, - "INT32:STRING", "PID:PNAME") + "INT32:STRING", "pid:pname") register_sys_event(GROUP_PROCESS, HOOKID_PROCESS_EXECVE, - "STRING", "PNAME") + "STRING", "pname") register_sys_event(GROUP_PROCESS, HOOKID_PROCESS_FORK, - "INT32", "PID") + "INT32", "pid") register_sys_event(GROUP_IOSCHED, HOOKID_IOSCHED_NEXT_REQ, - "STRING:INT8:INT8", "ELV_NAME:MAJOR:MINOR") + "STRING:INT8:INT8", "elv_name:major:minor") + register_sys_event(GROUP_IOSCHED, HOOKID_IOSCHED_ADD_REQ, - "STRING:INT8:INT8", "ELV_NAME:MAJOR:MINOR") + "STRING:INT8:INT8", "elv_name:major:minor") + register_sys_event(GROUP_IOSCHED, HOOKID_IOSCHED_REMOVE_REQ, - "STRING:INT8:INT8", "ELV_NAME:MAJOR:MINOR") + "STRING:INT8:INT8", "elv_name:major:minor") register_sys_event(GROUP_TASK, HOOKID_TASK_CTXSWITCH, - "INT32:INT32:INT8", "Prev_PID:Next_PID:Prev_State") + "INT32:INT32:INT8", "prev_pid:next_pid:prev_state") + register_sys_event(GROUP_TASK, HOOKID_TASK_CPUIDLE, - "INT32", "CurrPID") + "INT32", "cur_pid") register_sys_event(GROUP_SCSI, HOOKID_SCSI_IOENTRY, - "INT8:INT8:INT8", "MAJOR:MINOR:SDEV_STATE") + "INT8:INT8:INT8", "major:minor:sdev_state") + register_sys_event(GROUP_SCSI, HOOKID_SCSI_IO_TO_LLD, "INT8:INT32:INT8:INT64:INT32:INT64", - "SDEV_STATE:SCSI_INFO:Data_Dir:Req_Buf:Buf_Len:Cmd_ID") + "sdev_state:scsi_info:data_dir:req_buff:buf_len:cmd_id") + register_sys_event(GROUP_SCSI, HOOKID_SCSI_IODONE_BY_LLD, - "INT32:INT8:INT64", "SCSI_INFO:Data_Dir:Cmd_ID") + "INT32:INT8:INT64", "scsi_info:data_dir:cmd_id") + register_sys_event(GROUP_SCSI, HOOKID_SCSI_IOCOMP_BY_MIDLEVEL, - "INT32:INT8:INT64:INT32", "SCSI_INFO:Data_Dir:Cmd_ID:Bytes"); + "INT32:INT8:INT64:INT32", "scsi_info:data_dir:cmd_id:bytes"); register_sys_event(GROUP_PAGEFAULT, HOOKID_PAGEFAULT, - "INT64:INT8", "ADDR:WRITE") + "INT64:INT8", "addr:write") register_sys_event(GROUP_NETDEV, HOOKID_NETDEV_RECEIVE, - "STRING:INT32:INT16:INT32", "DEV_NAME:Data_LEN:Protocol:Buff_Size") + "STRING:INT32:INT16:INT32", "dev_name:data_len:protocol:buff_size") + register_sys_event(GROUP_NETDEV, HOOKID_NETDEV_TRANSMIT, - "STRING:INT32:INT16:INT32", "DEV_NAME:Data_LEN:Protocol:Buff_Size") + "STRING:INT32:INT16:INT32", "dev_name:data_len:protocol:buff_size") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_OPEN_ENTRY, + "STRING:INT32:INT32", "filename:flags:mode") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_OPEN_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_CLOSE_ENTRY, + "INT64", "fd") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_CLOSE_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_READ_ENTRY, + "INT64:INT64:INT64", "fd:buff_addr:count") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_READ_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_WRITE_ENTRY, + "INT64:INT64:INT64", "fd:buff_addr:count") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_WRITE_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_READV_ENTRY, + "INT64:INT64:INT64", "fd:vector_uaddr:count") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_READV_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_WRITEV_ENTRY, + "INT64:INT64:INT64", "fd:vector_uaddr:count") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_WRITEV_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_PREAD64_ENTRY, + "INT64:INT64:INT64:INT64", "fd:buff_uaddr:count:offset") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_PREAD64_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_PWRITE64_ENTRY, + "INT64:INT64:INT64:INT64", "fd:buff_uaddr:count:offset") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_PWRITE64_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_READAHEAD_ENTRY, + "INT64:INT64:INT64", "fd:offset:count") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_READAHEAD_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_SENDFILE_ENTRY, + "INT64:INT64:INT64:INT64", "out_fd:in_fd:offset_uaddr:count") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_SENDFILE_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_LSEEK_ENTRY, + "INT64:INT64:INT8", "fd:offset:whence") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_LSEEK_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_LLSEEK_ENTRY, + "INT64:INT64:INT64:INT64:INT8b", + "fd:offset_high:offset_low:result_uaddr:whence") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_LLSEEK_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_SYNC_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_FSYNC_ENTRY, + "INT64", "fd") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_FSYNC_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_FDATASYNC_ENTRY, + "INT64", "fd") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_FDATASYNC_RETURN, + "STRING", "return") + + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_FLOCK_ENTRY, + "INT64:INT32", "fd:operation") + register_sys_event(GROUP_IOSYSCALL, HOOKID_IOSYSCALL_FLOCK_RETURN, + "STRING", "return") } + probe register_event = begin { hookid_init() |