diff options
Diffstat (limited to 'include/trace')
-rw-r--r-- | include/trace/events/ext4.h | 136 | ||||
-rw-r--r-- | include/trace/events/migrate.h | 51 | ||||
-rw-r--r-- | include/trace/events/oom.h | 4 | ||||
-rw-r--r-- | include/trace/events/rcu.h | 1 | ||||
-rw-r--r-- | include/trace/events/task.h | 8 | ||||
-rw-r--r-- | include/trace/ftrace.h | 76 | ||||
-rw-r--r-- | include/trace/syscall.h | 23 |
7 files changed, 177 insertions, 122 deletions
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index d49b285385e8..f6372b011366 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h | |||
@@ -15,6 +15,7 @@ struct ext4_inode_info; | |||
15 | struct mpage_da_data; | 15 | struct mpage_da_data; |
16 | struct ext4_map_blocks; | 16 | struct ext4_map_blocks; |
17 | struct ext4_extent; | 17 | struct ext4_extent; |
18 | struct extent_status; | ||
18 | 19 | ||
19 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) | 20 | #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) |
20 | 21 | ||
@@ -1519,10 +1520,9 @@ DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter, | |||
1519 | ); | 1520 | ); |
1520 | 1521 | ||
1521 | DECLARE_EVENT_CLASS(ext4__map_blocks_exit, | 1522 | DECLARE_EVENT_CLASS(ext4__map_blocks_exit, |
1522 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, | 1523 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret), |
1523 | ext4_fsblk_t pblk, unsigned int len, int ret), | ||
1524 | 1524 | ||
1525 | TP_ARGS(inode, lblk, pblk, len, ret), | 1525 | TP_ARGS(inode, map, ret), |
1526 | 1526 | ||
1527 | TP_STRUCT__entry( | 1527 | TP_STRUCT__entry( |
1528 | __field( dev_t, dev ) | 1528 | __field( dev_t, dev ) |
@@ -1530,37 +1530,37 @@ DECLARE_EVENT_CLASS(ext4__map_blocks_exit, | |||
1530 | __field( ext4_fsblk_t, pblk ) | 1530 | __field( ext4_fsblk_t, pblk ) |
1531 | __field( ext4_lblk_t, lblk ) | 1531 | __field( ext4_lblk_t, lblk ) |
1532 | __field( unsigned int, len ) | 1532 | __field( unsigned int, len ) |
1533 | __field( unsigned int, flags ) | ||
1533 | __field( int, ret ) | 1534 | __field( int, ret ) |
1534 | ), | 1535 | ), |
1535 | 1536 | ||
1536 | TP_fast_assign( | 1537 | TP_fast_assign( |
1537 | __entry->dev = inode->i_sb->s_dev; | 1538 | __entry->dev = inode->i_sb->s_dev; |
1538 | __entry->ino = inode->i_ino; | 1539 | __entry->ino = inode->i_ino; |
1539 | __entry->pblk = pblk; | 1540 | __entry->pblk = map->m_pblk; |
1540 | __entry->lblk = lblk; | 1541 | __entry->lblk = map->m_lblk; |
1541 | __entry->len = len; | 1542 | __entry->len = map->m_len; |
1543 | __entry->flags = map->m_flags; | ||
1542 | __entry->ret = ret; | 1544 | __entry->ret = ret; |
1543 | ), | 1545 | ), |
1544 | 1546 | ||
1545 | TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u ret %d", | 1547 | TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u flags %x ret %d", |
1546 | MAJOR(__entry->dev), MINOR(__entry->dev), | 1548 | MAJOR(__entry->dev), MINOR(__entry->dev), |
1547 | (unsigned long) __entry->ino, | 1549 | (unsigned long) __entry->ino, |
1548 | __entry->lblk, __entry->pblk, | 1550 | __entry->lblk, __entry->pblk, |
1549 | __entry->len, __entry->ret) | 1551 | __entry->len, __entry->flags, __entry->ret) |
1550 | ); | 1552 | ); |
1551 | 1553 | ||
1552 | DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit, | 1554 | DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit, |
1553 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, | 1555 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret), |
1554 | ext4_fsblk_t pblk, unsigned len, int ret), | ||
1555 | 1556 | ||
1556 | TP_ARGS(inode, lblk, pblk, len, ret) | 1557 | TP_ARGS(inode, map, ret) |
1557 | ); | 1558 | ); |
1558 | 1559 | ||
1559 | DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit, | 1560 | DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit, |
1560 | TP_PROTO(struct inode *inode, ext4_lblk_t lblk, | 1561 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret), |
1561 | ext4_fsblk_t pblk, unsigned len, int ret), | ||
1562 | 1562 | ||
1563 | TP_ARGS(inode, lblk, pblk, len, ret) | 1563 | TP_ARGS(inode, map, ret) |
1564 | ); | 1564 | ); |
1565 | 1565 | ||
1566 | TRACE_EVENT(ext4_ext_load_extent, | 1566 | TRACE_EVENT(ext4_ext_load_extent, |
@@ -1680,10 +1680,10 @@ DEFINE_EVENT(ext4__trim, ext4_trim_all_free, | |||
1680 | ); | 1680 | ); |
1681 | 1681 | ||
1682 | TRACE_EVENT(ext4_ext_handle_uninitialized_extents, | 1682 | TRACE_EVENT(ext4_ext_handle_uninitialized_extents, |
1683 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, | 1683 | TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags, |
1684 | unsigned int allocated, ext4_fsblk_t newblock), | 1684 | unsigned int allocated, ext4_fsblk_t newblock), |
1685 | 1685 | ||
1686 | TP_ARGS(inode, map, allocated, newblock), | 1686 | TP_ARGS(inode, map, flags, allocated, newblock), |
1687 | 1687 | ||
1688 | TP_STRUCT__entry( | 1688 | TP_STRUCT__entry( |
1689 | __field( dev_t, dev ) | 1689 | __field( dev_t, dev ) |
@@ -1699,7 +1699,7 @@ TRACE_EVENT(ext4_ext_handle_uninitialized_extents, | |||
1699 | TP_fast_assign( | 1699 | TP_fast_assign( |
1700 | __entry->dev = inode->i_sb->s_dev; | 1700 | __entry->dev = inode->i_sb->s_dev; |
1701 | __entry->ino = inode->i_ino; | 1701 | __entry->ino = inode->i_ino; |
1702 | __entry->flags = map->m_flags; | 1702 | __entry->flags = flags; |
1703 | __entry->lblk = map->m_lblk; | 1703 | __entry->lblk = map->m_lblk; |
1704 | __entry->pblk = map->m_pblk; | 1704 | __entry->pblk = map->m_pblk; |
1705 | __entry->len = map->m_len; | 1705 | __entry->len = map->m_len; |
@@ -1707,7 +1707,7 @@ TRACE_EVENT(ext4_ext_handle_uninitialized_extents, | |||
1707 | __entry->newblk = newblock; | 1707 | __entry->newblk = newblock; |
1708 | ), | 1708 | ), |
1709 | 1709 | ||
1710 | TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %d" | 1710 | TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %x " |
1711 | "allocated %d newblock %llu", | 1711 | "allocated %d newblock %llu", |
1712 | MAJOR(__entry->dev), MINOR(__entry->dev), | 1712 | MAJOR(__entry->dev), MINOR(__entry->dev), |
1713 | (unsigned long) __entry->ino, | 1713 | (unsigned long) __entry->ino, |
@@ -2055,6 +2055,106 @@ TRACE_EVENT(ext4_ext_remove_space_done, | |||
2055 | (unsigned short) __entry->eh_entries) | 2055 | (unsigned short) __entry->eh_entries) |
2056 | ); | 2056 | ); |
2057 | 2057 | ||
2058 | TRACE_EVENT(ext4_es_insert_extent, | ||
2059 | TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len), | ||
2060 | |||
2061 | TP_ARGS(inode, start, len), | ||
2062 | |||
2063 | TP_STRUCT__entry( | ||
2064 | __field( dev_t, dev ) | ||
2065 | __field( ino_t, ino ) | ||
2066 | __field( loff_t, start ) | ||
2067 | __field( loff_t, len ) | ||
2068 | ), | ||
2069 | |||
2070 | TP_fast_assign( | ||
2071 | __entry->dev = inode->i_sb->s_dev; | ||
2072 | __entry->ino = inode->i_ino; | ||
2073 | __entry->start = start; | ||
2074 | __entry->len = len; | ||
2075 | ), | ||
2076 | |||
2077 | TP_printk("dev %d,%d ino %lu es [%lld/%lld)", | ||
2078 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2079 | (unsigned long) __entry->ino, | ||
2080 | __entry->start, __entry->len) | ||
2081 | ); | ||
2082 | |||
2083 | TRACE_EVENT(ext4_es_remove_extent, | ||
2084 | TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len), | ||
2085 | |||
2086 | TP_ARGS(inode, start, len), | ||
2087 | |||
2088 | TP_STRUCT__entry( | ||
2089 | __field( dev_t, dev ) | ||
2090 | __field( ino_t, ino ) | ||
2091 | __field( loff_t, start ) | ||
2092 | __field( loff_t, len ) | ||
2093 | ), | ||
2094 | |||
2095 | TP_fast_assign( | ||
2096 | __entry->dev = inode->i_sb->s_dev; | ||
2097 | __entry->ino = inode->i_ino; | ||
2098 | __entry->start = start; | ||
2099 | __entry->len = len; | ||
2100 | ), | ||
2101 | |||
2102 | TP_printk("dev %d,%d ino %lu es [%lld/%lld)", | ||
2103 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2104 | (unsigned long) __entry->ino, | ||
2105 | __entry->start, __entry->len) | ||
2106 | ); | ||
2107 | |||
2108 | TRACE_EVENT(ext4_es_find_extent_enter, | ||
2109 | TP_PROTO(struct inode *inode, ext4_lblk_t start), | ||
2110 | |||
2111 | TP_ARGS(inode, start), | ||
2112 | |||
2113 | TP_STRUCT__entry( | ||
2114 | __field( dev_t, dev ) | ||
2115 | __field( ino_t, ino ) | ||
2116 | __field( ext4_lblk_t, start ) | ||
2117 | ), | ||
2118 | |||
2119 | TP_fast_assign( | ||
2120 | __entry->dev = inode->i_sb->s_dev; | ||
2121 | __entry->ino = inode->i_ino; | ||
2122 | __entry->start = start; | ||
2123 | ), | ||
2124 | |||
2125 | TP_printk("dev %d,%d ino %lu start %u", | ||
2126 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2127 | (unsigned long) __entry->ino, __entry->start) | ||
2128 | ); | ||
2129 | |||
2130 | TRACE_EVENT(ext4_es_find_extent_exit, | ||
2131 | TP_PROTO(struct inode *inode, struct extent_status *es, | ||
2132 | ext4_lblk_t ret), | ||
2133 | |||
2134 | TP_ARGS(inode, es, ret), | ||
2135 | |||
2136 | TP_STRUCT__entry( | ||
2137 | __field( dev_t, dev ) | ||
2138 | __field( ino_t, ino ) | ||
2139 | __field( ext4_lblk_t, start ) | ||
2140 | __field( ext4_lblk_t, len ) | ||
2141 | __field( ext4_lblk_t, ret ) | ||
2142 | ), | ||
2143 | |||
2144 | TP_fast_assign( | ||
2145 | __entry->dev = inode->i_sb->s_dev; | ||
2146 | __entry->ino = inode->i_ino; | ||
2147 | __entry->start = es->start; | ||
2148 | __entry->len = es->len; | ||
2149 | __entry->ret = ret; | ||
2150 | ), | ||
2151 | |||
2152 | TP_printk("dev %d,%d ino %lu es [%u/%u) ret %u", | ||
2153 | MAJOR(__entry->dev), MINOR(__entry->dev), | ||
2154 | (unsigned long) __entry->ino, | ||
2155 | __entry->start, __entry->len, __entry->ret) | ||
2156 | ); | ||
2157 | |||
2058 | #endif /* _TRACE_EXT4_H */ | 2158 | #endif /* _TRACE_EXT4_H */ |
2059 | 2159 | ||
2060 | /* This part must be outside protection */ | 2160 | /* This part must be outside protection */ |
diff --git a/include/trace/events/migrate.h b/include/trace/events/migrate.h new file mode 100644 index 000000000000..ec2a6ccfd7e5 --- /dev/null +++ b/include/trace/events/migrate.h | |||
@@ -0,0 +1,51 @@ | |||
1 | #undef TRACE_SYSTEM | ||
2 | #define TRACE_SYSTEM migrate | ||
3 | |||
4 | #if !defined(_TRACE_MIGRATE_H) || defined(TRACE_HEADER_MULTI_READ) | ||
5 | #define _TRACE_MIGRATE_H | ||
6 | |||
7 | #define MIGRATE_MODE \ | ||
8 | {MIGRATE_ASYNC, "MIGRATE_ASYNC"}, \ | ||
9 | {MIGRATE_SYNC_LIGHT, "MIGRATE_SYNC_LIGHT"}, \ | ||
10 | {MIGRATE_SYNC, "MIGRATE_SYNC"} | ||
11 | |||
12 | #define MIGRATE_REASON \ | ||
13 | {MR_COMPACTION, "compaction"}, \ | ||
14 | {MR_MEMORY_FAILURE, "memory_failure"}, \ | ||
15 | {MR_MEMORY_HOTPLUG, "memory_hotplug"}, \ | ||
16 | {MR_SYSCALL, "syscall_or_cpuset"}, \ | ||
17 | {MR_MEMPOLICY_MBIND, "mempolicy_mbind"}, \ | ||
18 | {MR_CMA, "cma"} | ||
19 | |||
20 | TRACE_EVENT(mm_migrate_pages, | ||
21 | |||
22 | TP_PROTO(unsigned long succeeded, unsigned long failed, | ||
23 | enum migrate_mode mode, int reason), | ||
24 | |||
25 | TP_ARGS(succeeded, failed, mode, reason), | ||
26 | |||
27 | TP_STRUCT__entry( | ||
28 | __field( unsigned long, succeeded) | ||
29 | __field( unsigned long, failed) | ||
30 | __field( enum migrate_mode, mode) | ||
31 | __field( int, reason) | ||
32 | ), | ||
33 | |||
34 | TP_fast_assign( | ||
35 | __entry->succeeded = succeeded; | ||
36 | __entry->failed = failed; | ||
37 | __entry->mode = mode; | ||
38 | __entry->reason = reason; | ||
39 | ), | ||
40 | |||
41 | TP_printk("nr_succeeded=%lu nr_failed=%lu mode=%s reason=%s", | ||
42 | __entry->succeeded, | ||
43 | __entry->failed, | ||
44 | __print_symbolic(__entry->mode, MIGRATE_MODE), | ||
45 | __print_symbolic(__entry->reason, MIGRATE_REASON)) | ||
46 | ); | ||
47 | |||
48 | #endif /* _TRACE_MIGRATE_H */ | ||
49 | |||
50 | /* This part must be outside protection */ | ||
51 | #include <trace/define_trace.h> | ||
diff --git a/include/trace/events/oom.h b/include/trace/events/oom.h index dd4ba3b92002..1e974983757e 100644 --- a/include/trace/events/oom.h +++ b/include/trace/events/oom.h | |||
@@ -14,7 +14,7 @@ TRACE_EVENT(oom_score_adj_update, | |||
14 | TP_STRUCT__entry( | 14 | TP_STRUCT__entry( |
15 | __field( pid_t, pid) | 15 | __field( pid_t, pid) |
16 | __array( char, comm, TASK_COMM_LEN ) | 16 | __array( char, comm, TASK_COMM_LEN ) |
17 | __field( int, oom_score_adj) | 17 | __field( short, oom_score_adj) |
18 | ), | 18 | ), |
19 | 19 | ||
20 | TP_fast_assign( | 20 | TP_fast_assign( |
@@ -23,7 +23,7 @@ TRACE_EVENT(oom_score_adj_update, | |||
23 | __entry->oom_score_adj = task->signal->oom_score_adj; | 23 | __entry->oom_score_adj = task->signal->oom_score_adj; |
24 | ), | 24 | ), |
25 | 25 | ||
26 | TP_printk("pid=%d comm=%s oom_score_adj=%d", | 26 | TP_printk("pid=%d comm=%s oom_score_adj=%hd", |
27 | __entry->pid, __entry->comm, __entry->oom_score_adj) | 27 | __entry->pid, __entry->comm, __entry->oom_score_adj) |
28 | ); | 28 | ); |
29 | 29 | ||
diff --git a/include/trace/events/rcu.h b/include/trace/events/rcu.h index 5bde94d8585b..d4f559b1ec34 100644 --- a/include/trace/events/rcu.h +++ b/include/trace/events/rcu.h | |||
@@ -549,6 +549,7 @@ TRACE_EVENT(rcu_torture_read, | |||
549 | * "EarlyExit": rcu_barrier_callback() piggybacked, thus early exit. | 549 | * "EarlyExit": rcu_barrier_callback() piggybacked, thus early exit. |
550 | * "Inc1": rcu_barrier_callback() piggyback check counter incremented. | 550 | * "Inc1": rcu_barrier_callback() piggyback check counter incremented. |
551 | * "Offline": rcu_barrier_callback() found offline CPU | 551 | * "Offline": rcu_barrier_callback() found offline CPU |
552 | * "OnlineNoCB": rcu_barrier_callback() found online no-CBs CPU. | ||
552 | * "OnlineQ": rcu_barrier_callback() found online CPU with callbacks. | 553 | * "OnlineQ": rcu_barrier_callback() found online CPU with callbacks. |
553 | * "OnlineNQ": rcu_barrier_callback() found online CPU, no callbacks. | 554 | * "OnlineNQ": rcu_barrier_callback() found online CPU, no callbacks. |
554 | * "IRQ": An rcu_barrier_callback() callback posted on remote CPU. | 555 | * "IRQ": An rcu_barrier_callback() callback posted on remote CPU. |
diff --git a/include/trace/events/task.h b/include/trace/events/task.h index b53add02e929..102a646e1996 100644 --- a/include/trace/events/task.h +++ b/include/trace/events/task.h | |||
@@ -15,7 +15,7 @@ TRACE_EVENT(task_newtask, | |||
15 | __field( pid_t, pid) | 15 | __field( pid_t, pid) |
16 | __array( char, comm, TASK_COMM_LEN) | 16 | __array( char, comm, TASK_COMM_LEN) |
17 | __field( unsigned long, clone_flags) | 17 | __field( unsigned long, clone_flags) |
18 | __field( int, oom_score_adj) | 18 | __field( short, oom_score_adj) |
19 | ), | 19 | ), |
20 | 20 | ||
21 | TP_fast_assign( | 21 | TP_fast_assign( |
@@ -25,7 +25,7 @@ TRACE_EVENT(task_newtask, | |||
25 | __entry->oom_score_adj = task->signal->oom_score_adj; | 25 | __entry->oom_score_adj = task->signal->oom_score_adj; |
26 | ), | 26 | ), |
27 | 27 | ||
28 | TP_printk("pid=%d comm=%s clone_flags=%lx oom_score_adj=%d", | 28 | TP_printk("pid=%d comm=%s clone_flags=%lx oom_score_adj=%hd", |
29 | __entry->pid, __entry->comm, | 29 | __entry->pid, __entry->comm, |
30 | __entry->clone_flags, __entry->oom_score_adj) | 30 | __entry->clone_flags, __entry->oom_score_adj) |
31 | ); | 31 | ); |
@@ -40,7 +40,7 @@ TRACE_EVENT(task_rename, | |||
40 | __field( pid_t, pid) | 40 | __field( pid_t, pid) |
41 | __array( char, oldcomm, TASK_COMM_LEN) | 41 | __array( char, oldcomm, TASK_COMM_LEN) |
42 | __array( char, newcomm, TASK_COMM_LEN) | 42 | __array( char, newcomm, TASK_COMM_LEN) |
43 | __field( int, oom_score_adj) | 43 | __field( short, oom_score_adj) |
44 | ), | 44 | ), |
45 | 45 | ||
46 | TP_fast_assign( | 46 | TP_fast_assign( |
@@ -50,7 +50,7 @@ TRACE_EVENT(task_rename, | |||
50 | __entry->oom_score_adj = task->signal->oom_score_adj; | 50 | __entry->oom_score_adj = task->signal->oom_score_adj; |
51 | ), | 51 | ), |
52 | 52 | ||
53 | TP_printk("pid=%d oldcomm=%s newcomm=%s oom_score_adj=%d", | 53 | TP_printk("pid=%d oldcomm=%s newcomm=%s oom_score_adj=%hd", |
54 | __entry->pid, __entry->oldcomm, | 54 | __entry->pid, __entry->oldcomm, |
55 | __entry->newcomm, __entry->oom_score_adj) | 55 | __entry->newcomm, __entry->oom_score_adj) |
56 | ); | 56 | ); |
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index a763888a36f9..40dc5e8fe340 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -545,8 +545,7 @@ ftrace_raw_event_##call(void *__data, proto) \ | |||
545 | { assign; } \ | 545 | { assign; } \ |
546 | \ | 546 | \ |
547 | if (!filter_current_check_discard(buffer, event_call, entry, event)) \ | 547 | if (!filter_current_check_discard(buffer, event_call, entry, event)) \ |
548 | trace_nowake_buffer_unlock_commit(buffer, \ | 548 | trace_buffer_unlock_commit(buffer, event, irq_flags, pc); \ |
549 | event, irq_flags, pc); \ | ||
550 | } | 549 | } |
551 | /* | 550 | /* |
552 | * The ftrace_test_probe is compiled out, it is only here as a build time check | 551 | * The ftrace_test_probe is compiled out, it is only here as a build time check |
@@ -620,79 +619,6 @@ __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call | |||
620 | 619 | ||
621 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) | 620 | #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) |
622 | 621 | ||
623 | /* | ||
624 | * Define the insertion callback to perf events | ||
625 | * | ||
626 | * The job is very similar to ftrace_raw_event_<call> except that we don't | ||
627 | * insert in the ring buffer but in a perf counter. | ||
628 | * | ||
629 | * static void ftrace_perf_<call>(proto) | ||
630 | * { | ||
631 | * struct ftrace_data_offsets_<call> __maybe_unused __data_offsets; | ||
632 | * struct ftrace_event_call *event_call = &event_<call>; | ||
633 | * extern void perf_tp_event(int, u64, u64, void *, int); | ||
634 | * struct ftrace_raw_##call *entry; | ||
635 | * struct perf_trace_buf *trace_buf; | ||
636 | * u64 __addr = 0, __count = 1; | ||
637 | * unsigned long irq_flags; | ||
638 | * struct trace_entry *ent; | ||
639 | * int __entry_size; | ||
640 | * int __data_size; | ||
641 | * int __cpu | ||
642 | * int pc; | ||
643 | * | ||
644 | * pc = preempt_count(); | ||
645 | * | ||
646 | * __data_size = ftrace_get_offsets_<call>(&__data_offsets, args); | ||
647 | * | ||
648 | * // Below we want to get the aligned size by taking into account | ||
649 | * // the u32 field that will later store the buffer size | ||
650 | * __entry_size = ALIGN(__data_size + sizeof(*entry) + sizeof(u32), | ||
651 | * sizeof(u64)); | ||
652 | * __entry_size -= sizeof(u32); | ||
653 | * | ||
654 | * // Protect the non nmi buffer | ||
655 | * // This also protects the rcu read side | ||
656 | * local_irq_save(irq_flags); | ||
657 | * __cpu = smp_processor_id(); | ||
658 | * | ||
659 | * if (in_nmi()) | ||
660 | * trace_buf = rcu_dereference_sched(perf_trace_buf_nmi); | ||
661 | * else | ||
662 | * trace_buf = rcu_dereference_sched(perf_trace_buf); | ||
663 | * | ||
664 | * if (!trace_buf) | ||
665 | * goto end; | ||
666 | * | ||
667 | * trace_buf = per_cpu_ptr(trace_buf, __cpu); | ||
668 | * | ||
669 | * // Avoid recursion from perf that could mess up the buffer | ||
670 | * if (trace_buf->recursion++) | ||
671 | * goto end_recursion; | ||
672 | * | ||
673 | * raw_data = trace_buf->buf; | ||
674 | * | ||
675 | * // Make recursion update visible before entering perf_tp_event | ||
676 | * // so that we protect from perf recursions. | ||
677 | * | ||
678 | * barrier(); | ||
679 | * | ||
680 | * //zero dead bytes from alignment to avoid stack leak to userspace: | ||
681 | * *(u64 *)(&raw_data[__entry_size - sizeof(u64)]) = 0ULL; | ||
682 | * entry = (struct ftrace_raw_<call> *)raw_data; | ||
683 | * ent = &entry->ent; | ||
684 | * tracing_generic_entry_update(ent, irq_flags, pc); | ||
685 | * ent->type = event_call->id; | ||
686 | * | ||
687 | * <tstruct> <- do some jobs with dynamic arrays | ||
688 | * | ||
689 | * <assign> <- affect our values | ||
690 | * | ||
691 | * perf_tp_event(event_call->id, __addr, __count, entry, | ||
692 | * __entry_size); <- submit them to perf counter | ||
693 | * | ||
694 | * } | ||
695 | */ | ||
696 | 622 | ||
697 | #ifdef CONFIG_PERF_EVENTS | 623 | #ifdef CONFIG_PERF_EVENTS |
698 | 624 | ||
diff --git a/include/trace/syscall.h b/include/trace/syscall.h index 31966a4fb8cc..84bc4197e736 100644 --- a/include/trace/syscall.h +++ b/include/trace/syscall.h | |||
@@ -31,27 +31,4 @@ struct syscall_metadata { | |||
31 | struct ftrace_event_call *exit_event; | 31 | struct ftrace_event_call *exit_event; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | #ifdef CONFIG_FTRACE_SYSCALLS | ||
35 | extern unsigned long arch_syscall_addr(int nr); | ||
36 | extern int init_syscall_trace(struct ftrace_event_call *call); | ||
37 | |||
38 | extern int reg_event_syscall_enter(struct ftrace_event_call *call); | ||
39 | extern void unreg_event_syscall_enter(struct ftrace_event_call *call); | ||
40 | extern int reg_event_syscall_exit(struct ftrace_event_call *call); | ||
41 | extern void unreg_event_syscall_exit(struct ftrace_event_call *call); | ||
42 | extern int | ||
43 | ftrace_format_syscall(struct ftrace_event_call *call, struct trace_seq *s); | ||
44 | enum print_line_t print_syscall_enter(struct trace_iterator *iter, int flags, | ||
45 | struct trace_event *event); | ||
46 | enum print_line_t print_syscall_exit(struct trace_iterator *iter, int flags, | ||
47 | struct trace_event *event); | ||
48 | #endif | ||
49 | |||
50 | #ifdef CONFIG_PERF_EVENTS | ||
51 | int perf_sysenter_enable(struct ftrace_event_call *call); | ||
52 | void perf_sysenter_disable(struct ftrace_event_call *call); | ||
53 | int perf_sysexit_enable(struct ftrace_event_call *call); | ||
54 | void perf_sysexit_disable(struct ftrace_event_call *call); | ||
55 | #endif | ||
56 | |||
57 | #endif /* _TRACE_SYSCALL_H */ | 34 | #endif /* _TRACE_SYSCALL_H */ |