LTTng : Linux Trace Toolkit Next Generation 0.5.95, kernel 2.6.17
Subsystems (12)
PATCH 8/16 LTTng : Linux Trace Toolkit Next Generation 0.5.95, kernel 2.6.17
8- LTTng architecture independant instrumentation
patch-2.6.17-lttng-0.5.95-instrumentation.diff
OpenPGP public key: http://krystal.dyndns.org:8080/key/compudj.gpg Key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
fs/buffer.c +3 -0
@@ -18,6 +18,7 @@* async buffer flushing, 1999 Andrea Arcangeli <[email protected]> */ +#include <linux/ltt/ltt-facility-fs.h> #include <linux/config.h> #include <linux/kernel.h> #include <linux/syscalls.h>
@@ -90,7 +91,9 @@ void fastcall unlock_buffer(struct buffe*/ void __wait_on_buffer (struct buffer_head * bh) { +trace_fs_buf_wait_start ((void *)bh);wait_on_bit (&bh->b_state, BH_Lock, sync_buffer,TASK_UNINTERRUPTIBLE ); +trace_fs_buf_wait_end ((void *)bh); } static void
fs/compat.c +16 -0
@@ -46,6 +46,7 @@ #include <linux/personality.h>#include <linux/rwsem.h> #include <linux/acct.h> #include <linux/mm.h> +#include <linux/ltt/ltt-facility-fs.h> #include <net/sock.h> /* siocdevprivate_ioctl */
@@ -1498,6 +1499,7 @@ int compat_do_execve(char * filename,struct file *file;int retval;int i; +lttng_sequence_fs_exec_filename lttng_name; retval = -ENOMEM ; bprm =kzalloc (sizeof (*bprm),GFP_KERNEL );
@@ -1509,6 +1511,10 @@ int compat_do_execve(char * filename,if (IS_ERR (file)) goto out_kfree; + lttng_name.len = file->f_dentry->d_name.len; + lttng_name.array = file->f_dentry->d_name.name; +trace_fs_exec (<tng_name); +sched_exec (); bprm->p =PAGE_SIZE *MAX_ARG_PAGES -sizeof (void *);
@@ -1555,6 +1561,16 @@ int compat_do_execve(char * filename, retval =search_binary_handler (bprm, regs);if (retval >=0 ) { +#ifdef CONFIG_LTT_USERSPACE_GENERIC + { +int i; +for (i=0 ; i<LTT_FAC_PER_PROCESS ; i++) { +if (current->ltt_facilities[i] ==0 )break ; +WARN_ON (ltt_facility_unregister ( + current->ltt_facilities[i])); + } + } +#endif //CONFIG_LTT_USERSPACE_GENERIC free_arg_pages (bprm);/* execve success */
fs/exec.c +18 -0
@@ -22,6 +22,9 @@* formats. */ +#include <linux/ltt/ltt-facility-fs.h> +#include <linux/ltt-core.h> +#include <linux/ltt-facilities.h> #include <linux/config.h> #include <linux/slab.h> #include <linux/file.h>
@@ -1147,6 +1150,7 @@ int do_execve(char * filename,struct file *file;int retval;int i; +lttng_sequence_fs_exec_filename lttng_name; retval = -ENOMEM ; bprm =kzalloc (sizeof (*bprm),GFP_KERNEL );
@@ -1158,6 +1162,10 @@ int do_execve(char * filename,if (IS_ERR (file)) goto out_kfree; + lttng_name.len = file->f_dentry->d_name.len; + lttng_name.array = file->f_dentry->d_name.name; +trace_fs_exec (<tng_name); +sched_exec (); bprm->p =PAGE_SIZE *MAX_ARG_PAGES -sizeof (void *);
@@ -1205,6 +1213,16 @@ int do_execve(char * filename, retval =search_binary_handler (bprm,regs);if (retval >=0 ) { +#ifdef CONFIG_LTT_USERSPACE_GENERIC + { +int i; +for (i=0 ; i<LTT_FAC_PER_PROCESS ; i++) { +if (current->ltt_facilities[i] ==0 )break ; +WARN_ON (ltt_facility_unregister ( + current->ltt_facilities[i])); + } + } +#endif //CONFIG_LTT_USERSPACE_GENERIC free_arg_pages (bprm);/* execve success */
fs/ioctl.c +3 -1
@@ -4,6 +4,7 @@* Copyright (C) 1991, 1992 Linus Torvalds */ +#include <linux/ltt/ltt-facility-fs.h> #include <linux/config.h> #include <linux/syscalls.h> #include <linux/mm.h>
@@ -61,7 +62,6 @@ static int file_ioctl(struct file *filp,return -EPERM ;if ((error =get_user (block, p)) !=0 )return error; -lock_kernel (); res = mapping->a_ops->bmap (mapping, block);unlock_kernel ();
@@ -167,6 +167,8 @@ asmlinkage long sys_ioctl(unsigned int fif (!filp) goto out; +trace_fs_ioctl (fd, cmd, arg); + error =security_file_ioctl (filp, cmd, arg);if (error) goto out_fput;
fs/open.c +7 -0
@@ -4,6 +4,7 @@* Copyright (C) 1991, 1992 Linus Torvalds */ +#include <linux/ltt/ltt-facility-fs.h> #include <linux/string.h> #include <linux/mm.h> #include <linux/utime.h>
@@ -1080,6 +1081,8 @@ long do_sys_open(int dfd, const char __uchar *tmp =getname (filename);int fd =PTR_ERR (tmp); +lttng_sequence_fs_open_filename lttng_name; +if (!IS_ERR (tmp)) { fd =get_unused_fd ();if (fd >=0 ) {
@@ -1091,6 +1094,9 @@ long do_sys_open(int dfd, const char __ufsnotify_open (f->f_dentry);fd_install (fd, f); } + lttng_name.len =strlen (tmp); + lttng_name.array = tmp; +trace_fs_open (<tng_name, fd); }putname (tmp); }
@@ -1180,6 +1186,7 @@ asmlinkage long sys_close(unsigned int f filp = fdt->fd[fd];if (!filp) goto out_unlock; +trace_fs_close (fd);rcu_assign_pointer (fdt->fd[fd],NULL );FD_CLR (fd, fdt->close_on_exec);__put_unused_fd (files, fd);
fs/read_write.c +35 -2
@@ -4,6 +4,9 @@* Copyright (C) 1991, 1992 Linus Torvalds */ +#include <linux/ltt/ltt-facility-fs.h> +#include <linux/ltt/ltt-facility-custom-fs_data.h> +#include <linux/ltt/ltt-facility-fs_data.h> #include <linux/slab.h> #include <linux/stat.h> #include <linux/fcntl.h>
@@ -143,6 +146,9 @@ asmlinkage off_t sys_lseek(unsigned intif (res != (loff_t )retval) retval = -EOVERFLOW ;/* LFS: should only happen on 32 bit platforms */ } + +trace_fs_seek (fd, offset, origin); +fput_light (file, fput_needed); bad:return retval;
@@ -170,6 +176,8 @@ asmlinkage long sys_llseek(unsigned int offset =vfs_llseek (file, ((loff_t ) offset_high <<32 ) | offset_low, origin); +trace_fs_seek (fd, offset, origin); + retval = (int )offset;if (offset >=0 ) { retval = -EFAULT ;
@@ -348,7 +356,16 @@ asmlinkage ssize_t sys_read(unsigned int file =fget_light (fd, &fput_needed);if (file) {loff_t pos =file_pos_read (file); +trace_fs_read (fd, count); ret =vfs_read (file, buf, count, &pos); +#ifdef CONFIG_LTT_FACILITY_FS_DATA +if (ret >0 ) { +lttng_sequence_fs_data_read_data lttng_data; + lttng_data.len =min (LTT_LOG_RW_SIZE , ret); + lttng_data.array = buf; +trace_fs_data_read (fd, count, <tng_data); + } +#endif //CONFIG_LTT_FACILITY_FS_DATA file_pos_write (file, pos);fput_light (file, fput_needed); }
@@ -366,7 +383,16 @@ asmlinkage ssize_t sys_write(unsigned in file =fget_light (fd, &fput_needed);if (file) {loff_t pos =file_pos_read (file); +trace_fs_write (fd, count); ret =vfs_write (file, buf, count, &pos); +#ifdef CONFIG_LTT_FACILITY_FS_DATA +if (ret >0 ) { +lttng_sequence_fs_data_write_data lttng_data; + lttng_data.len =min (LTT_LOG_RW_SIZE , ret); + lttng_data.array = buf; +trace_fs_data_write (fd, count, <tng_data); + } +#endif //CONFIG_LTT_FACILITY_FS_DATA file_pos_write (file, pos);fput_light (file, fput_needed); }
@@ -387,8 +413,11 @@ asmlinkage ssize_t sys_pread64(unsigned file =fget_light (fd, &fput_needed);if (file) { ret = -ESPIPE ; -if (file->f_mode &FMODE_PREAD ) +if (file->f_mode &FMODE_PREAD ) { +trace_fs_read (fd, count); ret =vfs_read (file, buf, count, &pos); + } +fput_light (file, fput_needed); }
@@ -408,8 +437,10 @@ asmlinkage ssize_t sys_pwrite64(unsigned file =fget_light (fd, &fput_needed);if (file) { ret = -ESPIPE ; -if (file->f_mode &FMODE_PWRITE ) +if (file->f_mode &FMODE_PWRITE ) { +trace_fs_write (fd, count); ret =vfs_write (file, buf, count, &pos); + }fput_light (file, fput_needed); }
@@ -604,6 +635,7 @@ sys_readv(unsigned long fd, const struct file =fget_light (fd, &fput_needed);if (file) {loff_t pos =file_pos_read (file); +trace_fs_read (fd, vlen); ret =vfs_readv (file, vec, vlen, &pos);file_pos_write (file, pos);fput_light (file, fput_needed);
@@ -625,6 +657,7 @@ sys_writev(unsigned long fd, const struc file =fget_light (fd, &fput_needed);if (file) {loff_t pos =file_pos_read (file); +trace_fs_write (fd, vlen); ret =vfs_writev (file, vec, vlen, &pos);file_pos_write (file, pos);fput_light (file, fput_needed);
fs/select.c +4 -0
@@ -14,6 +14,7 @@* of fds to overcome nfds < 16390 descriptors limit (Tigran Aivazian). */ +#include <linux/ltt/ltt-facility-fs.h> #include <linux/syscalls.h> #include <linux/module.h> #include <linux/slab.h>
@@ -239,6 +240,8 @@ int do_select(int n, fd_set_bits *fds, s file =fget_light (i, &fput_needed);if (file) { f_op = file->f_op; +trace_fs_select (i,/* The fd */ + *timeout); mask =DEFAULT_POLLMASK ;if (f_op && f_op->poll) mask = (*f_op->poll)(file, retval ?NULL : wait);
@@ -564,6 +567,7 @@ static void do_pollfd(unsigned int num,struct file * file =fget_light (fd, &fput_needed); mask =POLLNVAL ;if (file !=NULL ) { +trace_fs_poll (fd); mask =DEFAULT_POLLMASK ;if (file->f_op && file->f_op->poll) mask = file->f_op->poll (file, *pwait);
ipc/msg.c +3 -0
@@ -35,6 +35,7 @@ #include <linux/mutex.h>#include <asm/current.h> #include <asm/uaccess.h> +#include <linux/ltt/ltt-facility-ipc.h> #include "util.h" /* sysctl: */
@@ -237,6 +238,8 @@ asmlinkage long sys_msgget (key_t key, imsg_unlock (msq); }mutex_unlock (&msg_ids.mutex); + +trace_ipc_msg_create (ret, msgflg);return ret; }
ipc/sem.c +2 -0
@@ -79,6 +79,7 @@ #include <linux/audit.h>#include <linux/capability.h> #include <linux/seq_file.h> #include <linux/mutex.h> +#include <linux/ltt/ltt-facility-ipc.h> #include <asm/uaccess.h> #include "util.h"
@@ -247,6 +248,7 @@ asmlinkage long sys_semget (key_t key, i }mutex_unlock (&sem_ids.mutex); +trace_ipc_sem_create (err, semflg);return err; }
ipc/shm.c +2 -0
@@ -33,6 +33,7 @@ #include <linux/capability.h>#include <linux/ptrace.h> #include <linux/seq_file.h> #include <linux/mutex.h> +#include <linux/ltt/ltt-facility-ipc.h> #include <asm/uaccess.h>
@@ -302,6 +303,7 @@ asmlinkage long sys_shmget (key_t key, s }mutex_unlock (&shm_ids.mutex); +trace_ipc_shm_create (err, shmflg);return err; }
kernel/irq/handle.c +7 -0
@@ -11,6 +11,7 @@ #include <linux/module.h>#include <linux/random.h> #include <linux/interrupt.h> #include <linux/kernel_stat.h> +#include <linux/ltt/ltt-facility-kernel.h> #include "internals.h"
@@ -36,6 +37,8 @@ irq_desc_t irq_desc[NR_IRQS] __cacheline } }; +EXPORT_SYMBOL_GPL (irq_desc); +/* * Generic 'no controller' code */
@@ -81,6 +84,8 @@ fastcall int handle_IRQ_event(unsigned i {int ret, retval =0 , status =0 ; +trace_kernel_irq_entry (irq, !(user_mode (regs))); +if (!(action->flags &SA_INTERRUPT ))local_irq_enable ();
@@ -96,6 +101,8 @@ fastcall int handle_IRQ_event(unsigned iadd_interrupt_randomness (irq);local_irq_disable (); +trace_kernel_irq_exit (); +return retval; }
kernel/itimer.c +9 -0
@@ -13,6 +13,7 @@ #include <linux/syscalls.h>#include <linux/time.h> #include <linux/posix-timers.h> #include <linux/hrtimer.h> +#include <linux/ltt/ltt-facility-timer.h> #include <asm/uaccess.h>
@@ -133,6 +134,8 @@ int it_real_fn(struct hrtimer *timer)struct signal_struct *sig = container_of(timer, struct signal_struct, real_timer); +trace_timer_expired (sig->tsk->pid); +send_group_sig_info (SIGALRM ,SEND_SIG_PRIV , sig->tsk);if (sig->it_real_incr.tv64 !=0 ) {
@@ -216,6 +219,12 @@ int do_setitimer(int which, struct itime*/ check_itimerval (value); +trace_timer_set_itimer (which, + value->it_interval.tv_sec, + value->it_interval.tv_usec, + value->it_value.tv_sec, + value->it_value.tv_usec); +switch (which) {case ITIMER_REAL : again:
kernel/sched.c +4 -0
@@ -50,6 +50,7 @@ #include <linux/syscalls.h>#include <linux/times.h> #include <linux/acct.h> #include <linux/kprobes.h> +#include <linux/ltt/ltt-facility-process.h> #include <asm/tlb.h> #include <asm/unistd.h>
@@ -360,6 +361,8 @@ static inline runqueue_t *task_rq_lock(t {struct runqueue *rq; +trace_process_wakeup (p->pid, p->state); + repeat_lock_task:local_irq_save (*flags); rq =task_rq (p);
@@ -3053,6 +3056,7 @@ switch_tasks: ++*switch_count;prepare_task_switch (rq, next); +trace_process_schedchange (prev->pid, next->pid, prev->state); prev =context_switch (rq, prev, next);barrier ();/*
kernel/signal.c +3 -0
@@ -25,6 +25,7 @@ #include <linux/ptrace.h>#include <linux/signal.h> #include <linux/audit.h> #include <linux/capability.h> +#include <linux/ltt/ltt-facility-process.h> #include <asm/param.h> #include <asm/uaccess.h> #include <asm/unistd.h>
@@ -776,6 +777,8 @@ specific_send_sig_info(int sig, struct sif (sig_ignored (t, sig)) goto out; +trace_process_signal (t->pid, sig); +/* Support queueing exactly one non-rt signal, so that we can get more detailed information about the cause of the signal. */
kernel/softirq.c +15 -2
@@ -17,6 +17,7 @@ #include <linux/cpu.h>#include <linux/kthread.h> #include <linux/rcupdate.h> #include <linux/smp.h> +#include <linux/ltt/ltt-facility-kernel.h> #include <asm/irq.h> /*
@@ -93,7 +94,9 @@ restart: do { if (pending & 1) { + trace_kernel_soft_irq_entry((void*)(h - softirq_vec)); h->action(h); + trace_kernel_soft_irq_exit((void*)(h - softirq_vec)); rcu_bh_qsctr_inc(cpu); } h++;
@@ -263,9 +266,14 @@ static void tasklet_action(struct softirif (tasklet_trylock (t)) {if (!atomic_read (&t->count)) { -if (!test_and_clear_bit (TASKLET_STATE_SCHED , &t->state)) +if (!test_and_clear_bit (TASKLET_STATE_SCHED , + &t->state))BUG (); +trace_kernel_tasklet_entry ( +LTTNG_LOW , t->func, t->data); t->func (t->data); +trace_kernel_tasklet_exit ( +LTTNG_LOW , t->func, t->data);tasklet_unlock (t);continue ; }
@@ -296,9 +304,14 @@ static void tasklet_hi_action(struct sofif (tasklet_trylock (t)) {if (!atomic_read (&t->count)) { -if (!test_and_clear_bit (TASKLET_STATE_SCHED , &t->state)) +if (!test_and_clear_bit (TASKLET_STATE_SCHED , + &t->state))BUG (); +trace_kernel_tasklet_entry ( +LTTNG_HIGH , t->func, t->data); t->func (t->data); +trace_kernel_tasklet_exit ( +LTTNG_HIGH , t->func, t->data);tasklet_unlock (t);continue ; }
kernel/timer.c +9 -0
@@ -34,6 +34,8 @@ #include <linux/posix-timers.h>#include <linux/cpu.h> #include <linux/syscalls.h> #include <linux/delay.h> +#include <linux/ltt/ltt-facility-timer.h> +#include <linux/ltt/ltt-facility-custom-stack.h> #include <asm/uaccess.h> #include <asm/unistd.h>
@@ -130,6 +132,7 @@ static void internal_add_timer(tvec_base i = (expires >> (TVR_BITS +3 *TVN_BITS )) &TVN_MASK ; vec = base->tv5.vec + i; } +trace_timer_set_timer (expires, timer->function, timer->data);/* * Timers are FIFO: */
@@ -896,7 +899,9 @@ static void run_timer_softirq(struct sof {tvec_base_t *base =__get_cpu_var (tvec_bases); +trace_timer_softirq ();hrtimer_run_queues (); +if (time_after_eq (jiffies, base->timer_jiffies))__run_timers (base); }
@@ -934,6 +939,9 @@ static inline void update_times(void)void do_timer (struct pt_regs *regs) { +#ifdef CONFIG_LTT_STACK_INTERRUPT +trace_stack_dump (regs); +#endif //CONFIG_LTT_STACK_INTERRUPT jiffies_64++;/* prevent loading jiffies before storing new jiffies_64 value. */ barrier ();
@@ -1046,6 +1054,7 @@ #endifstatic void process_timeout (unsigned long __data) { +trace_timer_expired (((task_t *)__data)->pid);wake_up_process ((task_t *)__data); }
kernel/module.c +22 -0
@@ -40,6 +40,7 @@ #include <linux/device.h>#include <linux/string.h> #include <linux/sched.h> #include <linux/mutex.h> +#include <linux/ltt/ltt-facility-statedump.h> #include <asm/uaccess.h> #include <asm/semaphore.h> #include <asm/cacheflush.h>
@@ -2041,6 +2042,27 @@ struct seq_operations modules_op = { .show = m_show }; +int ltt_enumerate_modules (void ) +{ +/* Enumerate loaded modules */ +struct list_head *i; +struct module *mod; +unsigned long refcount =0 ; + +mutex_lock (&module_mutex); +list_for_each (i, &modules) { + mod = list_entry(i, struct module, list); +#ifdef CONFIG_MODULE_UNLOAD + refcount =local_read (&mod->ref[0 ].count); +#endif //CONFIG_MODULE_UNLOAD +trace_statedump_enumerate_modules ( + mod->name, mod->state, refcount); + } +mutex_unlock (&module_mutex); +return 0 ; +} +EXPORT_SYMBOL (ltt_enumerate_modules); +/* Given an address, look for it in the module exception tables. */ const struct exception_table_entry *search_module_extables (unsigned long addr) {
mm/filemap.c +5 -0
@@ -30,6 +30,7 @@ #include <linux/blkdev.h>#include <linux/security.h> #include <linux/syscalls.h> #include <linux/cpuset.h> +#include <linux/ltt/ltt-facility-memory.h> #include "filemap.h" #include "internal.h"
@@ -482,9 +483,13 @@ void fastcall wait_on_page_bit(struct pa {DEFINE_WAIT_BIT (wait, &page->flags, bit_nr); +trace_memory_page_wait_start (page_address (page)); +if (test_bit (bit_nr, &page->flags))__wait_on_bit (page_waitqueue (page), &wait, sync_page,TASK_UNINTERRUPTIBLE ); + +trace_memory_page_wait_end (page_address (page)); }EXPORT_SYMBOL (wait_on_page_bit);
mm/memory.c +2 -0
@@ -48,6 +48,7 @@ #include <linux/pagemap.h>#include <linux/rmap.h> #include <linux/module.h> #include <linux/init.h> +#include <linux/ltt/ltt-facility-memory.h> #include <asm/pgalloc.h> #include <asm/uaccess.h>
@@ -1882,6 +1883,7 @@ static int do_swap_page(struct mm_struct again: page =lookup_swap_cache (entry);if (!page) { +trace_memory_swap_in ((void *)address);swapin_readahead (entry, address, vma); page =read_swap_cache_async (entry, vma, address);if (!page) {
mm/page_alloc.c +4 -0
@@ -37,6 +37,7 @@ #include <linux/memory_hotplug.h>#include <linux/nodemask.h> #include <linux/vmalloc.h> #include <linux/mempolicy.h> +#include <linux/ltt/ltt-facility-memory.h> #include <asm/tlbflush.h> #include <asm/div64.h>
@@ -438,6 +439,8 @@ static void __free_pages_ok(struct pageint i;int reserved =0 ; +trace_memory_page_free (order,page_address (page)); +arch_free_page (page, order);if (!PageHighMem (page)) mutex_debug_check_no_locks_freed(page_address(page),
@@ -1087,6 +1090,7 @@ fastcall unsigned long __get_free_pages( page =alloc_pages (gfp_mask, order);if (!page)return 0 ; +trace_memory_page_alloc (order,page_address (page));return (unsigned long )page_address (page); }
mm/page_io.c +2 -0
@@ -17,6 +17,7 @@ #include <linux/swap.h>#include <linux/bio.h> #include <linux/swapops.h> #include <linux/writeback.h> +#include <linux/ltt/ltt-facility-memory.h> #include <asm/pgtable.h> static struct bio *get_swap_bio(gfp_t gfp_flags, pgoff_t index,
@@ -103,6 +104,7 @@ int swap_writepage(struct page *page, st rw |= (1 <<BIO_RW_SYNC );inc_page_state (pswpout);set_page_writeback (page); +trace_memory_swap_out (page_address (page));unlock_page (page);submit_bio (rw, bio); out:
net/core/dev.c +5 -0
@@ -115,6 +115,7 @@ #include <linux/wireless.h>#include <net/iw_handler.h> #include <asm/current.h> #include <linux/audit.h> +#include <linux/ltt/ltt-facility-network.h> /* * The list of packet types we will receive (as opposed to discard)
@@ -1343,6 +1344,8 @@ int dev_queue_xmit(struct sk_buff *skb)if (skb_checksum_help (skb,0 )) goto out_kfree_skb; +trace_network_packet_out (skb, skb->protocol); +spin_lock_prefetch (&dev->queue_lock);/* Disable soft irqs for various locks below. Also
@@ -1692,6 +1695,8 @@ int netif_receive_skb(struct sk_buff *sk__get_cpu_var (netdev_rx_stat).total++; +trace_network_packet_in (skb, skb->protocol); + skb->h.raw = skb->nh.raw = skb->data; skb->mac_len = skb->nh.raw - skb->mac.raw;
net/ipv4/devinet.c +12 -0
@@ -58,6 +58,7 @@ #ifdef CONFIG_SYSCTL#include <linux/sysctl.h> #endif #include <linux/kmod.h> +#include <linux/ltt/ltt-facility-network_ip_interface.h> #include <net/arp.h> #include <net/ip.h>
@@ -1020,8 +1021,19 @@ static int inetdev_event(struct notifier } }ip_mc_up (in_dev); + + { +struct in_ifaddr **ifap =NULL ; +struct in_ifaddr *ifa =NULL ; +for (ifap = &in_dev->ifa_list; (ifa = *ifap) !=NULL ; + ifap = &ifa->ifa_next) +trace_network_ip_interface_dev_up (ifa->ifa_label, + ifa->ifa_address); + }break ;case NETDEV_DOWN : +trace_network_ip_interface_dev_down (dev->name); +ip_mc_down (in_dev);break ;case NETDEV_CHANGEMTU :
net/socket.c +18 -0
@@ -86,6 +86,7 @@ #include <linux/compat.h>#include <linux/kmod.h> #include <linux/audit.h> #include <linux/wireless.h> +#include <linux/ltt/ltt-facility-socket.h> #include <asm/uaccess.h> #include <asm/unistd.h>
@@ -602,6 +603,11 @@ int sock_sendmsg(struct socket *sock, ststruct sock_iocb siocb;int ret; +trace_socket_sendmsg (sock, sock->sk->sk_family, + sock->sk->sk_type, + sock->sk->sk_protocol, + size); +init_sync_kiocb (&iocb,NULL ); iocb.private = &siocb; ret =__sock_sendmsg (&iocb, sock, msg, size);
@@ -654,6 +660,11 @@ int sock_recvmsg(struct socket *sock, ststruct sock_iocb siocb;int ret; +trace_socket_recvmsg (sock, sock->sk->sk_family, + sock->sk->sk_type, + sock->sk->sk_protocol, + size); +init_sync_kiocb (&iocb,NULL ); iocb.private = &siocb; ret =__sock_recvmsg (&iocb, sock, msg, size, flags);
@@ -1248,6 +1259,11 @@ asmlinkage long sys_socket(int family, iif (retval <0 ) goto out_release; +trace_socket_create (sock, family, + type, + protocol, + retval); + out:/* It may be already another descriptor 8) Not kernel problem. */ return retval;
@@ -1986,6 +2002,8 @@ asmlinkage long sys_socketcall(int call, a0=a[0 ]; a1=a[1 ]; + +trace_socket_call (call, a0);switch (call) {