Esempio n. 1
0
void probe_block_rq_requeue(void *data, struct request_queue *q, struct request *rq)
{
	int rw = rq->cmd_flags & 0x03;

	if (blk_discard_rq(rq))
		rw |= (1 << BIO_RW_DISCARD);

	if (blk_pc_request(rq)) {
		trace_mark_tp(block, rq_requeue_pc, block_rq_requeue,
			probe_block_rq_requeue,
			"data_len %u rw %d errors %d",
			blk_rq_bytes(rq), rw, rq->errors);
	} else {
		/*
		 * FIXME Using a simple trace_mark for the second event
		 * possibility because tracepoints do not support multiple
		 * connections to the same probe yet. They should have some
		 * refcounting. Need to enable both rq_requeue_pc and
		 * rq_requeue_fs markers to have the rq_requeue_fs marker
		 * enabled.
		 */
		trace_mark(block, rq_requeue_fs,
			"hard_sector %llu "
			"rw %d errors %d", (unsigned long long)blk_rq_pos(rq),
			rw, rq->errors);
	}
}
Esempio n. 2
0
void probe_block_unplug_io(void *data, struct request_queue *q)
{
	unsigned int pdu = q->rq.count[READ] + q->rq.count[WRITE];

	trace_mark_tp(block, unplug_io, block_unplug_io, probe_block_unplug_io,
			"pdu %u", pdu);
}
Esempio n. 3
0
void probe_kernel_vprintk(void *_data, unsigned long retaddr, char *buf, int len)
{
	if (len > 0) {
		unsigned int loglevel;
		int mark_len;
		char *mark_buf;
		char saved_char;

		if (buf[0] == '<' && buf[1] >= '0' &&
		   buf[1] <= '7' && buf[2] == '>') {
			loglevel = buf[1] - '0';
			mark_buf = &buf[3];
			mark_len = len - 3;
		} else {
			loglevel = default_message_loglevel;
			mark_buf = buf;
			mark_len = len;
		}
		if (mark_buf[mark_len - 1] == '\n')
			mark_len--;
		saved_char = mark_buf[mark_len];
		mark_buf[mark_len] = '\0';
		trace_mark_tp(kernel, vprintk, kernel_vprintk,
			probe_kernel_vprintk,
			"loglevel #1u%u string %s ip 0x%lX",
			loglevel, mark_buf, retaddr);
		mark_buf[mark_len] = saved_char;
	}
}
Esempio n. 4
0
void probe_add_to_page_cache(void *_data, struct address_space *mapping, pgoff_t offset)
{
	trace_mark_tp(mm, add_to_page_cache, add_to_page_cache,
		probe_add_to_page_cache,
		"inode %lu sdev %u",
		mapping->host->i_ino, mapping->host->i_sb->s_dev);
}
Esempio n. 5
0
void probe_kernel_panic(void *_data, const char *fmt, va_list args)
{
	char info[64];
	vsnprintf(info, sizeof(info), fmt, args);
	trace_mark_tp(kernel, panic, kernel_panic, probe_kernel_panic,
		"info %s", info);
}
Esempio n. 6
0
void probe_remove_from_page_cache(void *_data, struct address_space *mapping)
{
	trace_mark_tp(mm, remove_from_page_cache, remove_from_page_cache,
		probe_remove_from_page_cache,
		"inode %lu sdev %u",
		mapping->host->i_ino, mapping->host->i_sb->s_dev);
}
Esempio n. 7
0
void probe_socket_create(void *_data, int family, int type, int protocol,
	struct socket *sock, int ret)
{
	trace_mark_tp(net, socket_create, socket_create, probe_socket_create,
		"family %d type %d protocol %d sock %p ret %d",
		family, type, protocol, sock, ret);
}
Esempio n. 8
0
void probe_socket_accept(void *_data, int fd, struct sockaddr __user *upeer_sockaddr,
	int __user *upeer_addrlen, int flags, int ret)
{
	trace_mark_tp(net, socket_accept, socket_accept, probe_socket_accept,
		"fd %d upeer_sockaddr %p upeer_addrlen %p flags %d ret %d",
		fd, upeer_sockaddr, upeer_addrlen, flags, ret);
}
Esempio n. 9
0
void probe_socket_shutdown(void *_data, int fd, int how, int ret)
{
	trace_mark_tp(net, socket_shutdown, socket_shutdown,
		probe_socket_shutdown,
		"fd %d how %d ret %d",
		fd, how, ret);
}
Esempio n. 10
0
void probe_socket_connect(void *_data, int fd, struct sockaddr __user *uservaddr,
	int addrlen, int ret)
{
	trace_mark_tp(net, socket_connect, socket_connect, probe_socket_connect,
		"fd %d uservaddr %p addrlen %d ret %d",
		fd, uservaddr, addrlen, ret);
}
Esempio n. 11
0
void probe_socket_bind(void *_data, int fd, struct sockaddr __user *umyaddr, int addrlen,
	int ret)
{
	trace_mark_tp(net, socket_bind, socket_bind, probe_socket_bind,
		"fd %d umyaddr %p addrlen %d ret %d",
		fd, umyaddr, addrlen, ret);
}
Esempio n. 12
0
void probe_socket_getsockopt(void *_data, int fd, int level, int optname,
	char __user *optval, int __user *optlen, int ret)
{
	trace_mark_tp(net, socket_getsockopt, socket_getsockopt,
		probe_socket_getsockopt,
		"fd %d level %d optname %d optval %p optlen %p ret %d",
		fd, level, optname, optval, optlen, ret);
}
Esempio n. 13
0
void probe_socket_socketpair(void *_data, int family, int type, int protocol,
	int __user *usockvec, int ret)
{
	trace_mark_tp(net, socket_socketpair, socket_socketpair,
		probe_socket_socketpair,
		"family %d type %d protocol %d usockvec %p ret %d",
		family, type, protocol, usockvec, ret);
}
Esempio n. 14
0
void probe_socket_getpeername(void *_data, int fd, struct sockaddr __user *usockaddr,
	int __user *usockaddr_len, int ret)
{
	trace_mark_tp(net, socket_getpeername, socket_getpeername,
		probe_socket_getpeername,
		"fd %d usockaddr %p usockaddr_len %p ret %d",
		fd, usockaddr, usockaddr_len, ret);
}
Esempio n. 15
0
void probe_swap_in(void *_data, struct page *page, swp_entry_t entry)
{
	trace_mark_tp(mm, swap_in, swap_in, probe_swap_in,
		"pfn %lu filp %p offset %lu",
		page_to_pfn(page),
		get_swap_info_struct(swp_type(entry))->swap_file,
		swp_offset(entry));
}
Esempio n. 16
0
void probe_sched_process_fork(void *_data, struct task_struct *parent,
		struct task_struct *child)
{
	trace_mark_tp(kernel, process_fork, sched_process_fork,
		probe_sched_process_fork,
		"parent_pid %d child_pid %d child_tgid %d",
		parent->pid, child->pid, child->tgid);
}
Esempio n. 17
0
void probe_swap_out(struct page *page)
{
	trace_mark_tp(mm, swap_out, swap_out, probe_swap_out,
		"pfn %lu filp %p offset %lu",
		page_to_pfn(page),
		get_swap_info_struct(swp_type(
			page_swp_entry(page)))->swap_file,
		swp_offset(page_swp_entry(page)));
}
Esempio n. 18
0
void probe_block_bio_queue(void *data, struct request_queue *q, struct bio *bio)
{
	trace_mark_tp(block, bio_queue, block_bio_queue,
		probe_block_bio_queue,
		"sector %llu size %u rw(FAILFAST_DRIVER,FAILFAST_TRANSPORT,"
		"FAILFAST_DEV,DISCARD,META,SYNC,BARRIER,AHEAD,RW) %lX "
		"not_uptodate #1u%d",
		(unsigned long long)bio->bi_sector, bio->bi_size,
		bio->bi_rw, !bio_flagged(bio, BIO_UPTODATE));
}
Esempio n. 19
0
void probe_timer_update_time(void *_data, struct timespec *_xtime,
		struct timespec *_wall_to_monotonic)
{
	trace_mark_tp(kernel, timer_update_time, timer_update_time,
		probe_timer_update_time,
		"jiffies #8u%llu xtime_sec %ld xtime_nsec %ld "
		"walltomonotonic_sec %ld walltomonotonic_nsec %ld",
		(unsigned long long)jiffies_64, _xtime->tv_sec, _xtime->tv_nsec,
		_wall_to_monotonic->tv_sec, _wall_to_monotonic->tv_nsec);
}
Esempio n. 20
0
void probe_timer_itimer_set(void *_data, int which, struct itimerval *value)
{
	trace_mark_tp(kernel, timer_itimer_set,
		timer_itimer_set, probe_timer_itimer_set,
		"which %d interval_sec %ld interval_usec %ld "
		"value_sec %ld value_usec %ld",
		which,
		value->it_interval.tv_sec,
		value->it_interval.tv_usec,
		value->it_value.tv_sec,
		value->it_value.tv_usec);
}
Esempio n. 21
0
void probe_block_remap(void *data, struct request_queue *q, struct bio *bio,
		       dev_t dev, sector_t from)
{
	trace_mark_tp(block, remap, block_remap,
		probe_block_remap,
		"device_from %lu sector_from %llu device_to %lu "
		"size %u rw(FAILFAST_DRIVER,FAILFAST_TRANSPORT,"
		"FAILFAST_DEV,DISCARD,META,SYNC,BARRIER,AHEAD,RW) %lX "
		"not_uptodate #1u%d",
		(unsigned long)bio->bi_bdev->bd_dev,
		(unsigned long long)from,
		(unsigned long)dev,
		bio->bi_size, bio->bi_rw,
		!bio_flagged(bio, BIO_UPTODATE));
}
Esempio n. 22
0
void probe_ipv6_addr_del(void *_data, struct inet6_ifaddr *ifa)
{
	__u8 *addr = ifa->addr.s6_addr;

	trace_mark_tp(netif_state, insert_ifa_ipv6, ipv6_addr_del,
		probe_ipv6_addr_del,
		"label %s "
		"a15 #1x%c a14 #1x%c a13 #1x%c a12 #1x%c "
		"a11 #1x%c a10 #1x%c a9 #1x%c a8 #1x%c "
		"a7 #1x%c a6 #1x%c a5 #1x%c a4 #1x%c "
		"a3 #1x%c a2 #1x%c a1 #1x%c a0 #1x%c",
		ifa->idev->dev->name,
		addr[15], addr[14], addr[13], addr[12],
		addr[11], addr[10], addr[9], addr[8],
		addr[7], addr[6], addr[5], addr[4],
		addr[3], addr[2], addr[1], addr[0]);
}
Esempio n. 23
0
void probe_block_sleeprq(void *data, struct request_queue *q, struct bio *bio, int rw)
{
	if (bio) {
		trace_mark_tp(block, sleeprq_bio, block_sleeprq,
			probe_block_sleeprq,
			"sector %llu size %u "
			"rw(FAILFAST_DRIVER,FAILFAST_TRANSPORT,"
			"FAILFAST_DEV,DISCARD,META,SYNC,BARRIER,AHEAD,RW) %lX "
			"not_uptodate #1u%d",
			(unsigned long long)bio->bi_sector, bio->bi_size,
			bio->bi_rw, !bio_flagged(bio, BIO_UPTODATE));
	} else {
		/*
		 * FIXME Using a simple trace_mark for the second event
		 * possibility because tracepoints do not support multiple
		 * connections to the same probe yet. They should have some
		 * refcounting. Need to enable both sleeprq_bio and sleeprq
		 * markers to have the sleeprq marker enabled.
		 */
		trace_mark(block, sleeprq, "rw %d", rw);
	}
}
Esempio n. 24
0
void probe_hugetlb_page_alloc(void *_data, struct page *page)
{
	if (page)
		trace_mark_tp(mm, huge_page_alloc, hugetlb_page_alloc,
			probe_hugetlb_page_alloc, "pfn %lu", page_to_pfn(page));
}
Esempio n. 25
0
void probe_hugetlb_page_free(void *_data, struct page *page)
{
	trace_mark_tp(mm, huge_page_free, hugetlb_page_free,
		probe_hugetlb_page_free, "pfn %lu", page_to_pfn(page));
}
Esempio n. 26
0
void probe_wait_on_page_end(void *_data, struct page *page, int bit_nr)
{
	trace_mark_tp(mm, wait_on_page_end, wait_on_page_end,
		probe_wait_on_page_end, "pfn %lu bit_nr %d",
		page_to_pfn(page), bit_nr);
}
Esempio n. 27
0
void probe_swap_file_open(void *_data, struct file *file, char *filename)
{
	trace_mark_tp(mm, swap_file_open, swap_file_open,
		probe_swap_file_open, "filp %p filename %s",
		file, filename);
}
Esempio n. 28
0
void probe_swap_file_close(void *_data, struct file *file)
{
	trace_mark_tp(mm, swap_file_close, swap_file_close,
		probe_swap_file_close, "filp %p", file);
}
Esempio n. 29
0
void probe_kernel_crash_kexec(void *_data, struct kimage *image, struct pt_regs *regs)
{
	trace_mark_tp(kernel, crash_kexec, kernel_crash_kexec,
		probe_kernel_crash_kexec, "image %p ip %p", image,
		regs ? (void *)instruction_pointer(regs) : NULL);
}
Esempio n. 30
0
void probe_kernel_kernel_kexec(void *_data, struct kimage *image)
{
	trace_mark_tp(kernel, kernel_kexec, kernel_kernel_kexec,
		probe_kernel_kernel_kexec, "image %p", image);
}