Lines Matching refs:session
46 static void __reset_stat_session(struct stat_session *session) in __reset_stat_session() argument
50 rbtree_postorder_for_each_entry_safe(snode, n, &session->stat_root, node) { in __reset_stat_session()
51 if (session->ts->stat_release) in __reset_stat_session()
52 session->ts->stat_release(snode->stat); in __reset_stat_session()
56 session->stat_root = RB_ROOT; in __reset_stat_session()
59 static void reset_stat_session(struct stat_session *session) in reset_stat_session() argument
61 mutex_lock(&session->stat_mutex); in reset_stat_session()
62 __reset_stat_session(session); in reset_stat_session()
63 mutex_unlock(&session->stat_mutex); in reset_stat_session()
66 static void destroy_session(struct stat_session *session) in destroy_session() argument
68 tracefs_remove(session->file); in destroy_session()
69 __reset_stat_session(session); in destroy_session()
70 mutex_destroy(&session->stat_mutex); in destroy_session()
71 kfree(session); in destroy_session()
124 static int stat_seq_init(struct stat_session *session) in stat_seq_init() argument
126 struct tracer_stat *ts = session->ts; in stat_seq_init()
127 struct rb_root *root = &session->stat_root; in stat_seq_init()
132 mutex_lock(&session->stat_mutex); in stat_seq_init()
133 __reset_stat_session(session); in stat_seq_init()
162 mutex_unlock(&session->stat_mutex); in stat_seq_init()
166 __reset_stat_session(session); in stat_seq_init()
167 mutex_unlock(&session->stat_mutex); in stat_seq_init()
174 struct stat_session *session = s->private; in stat_seq_start() local
180 mutex_lock(&session->stat_mutex); in stat_seq_start()
183 if (session->ts->stat_headers) { in stat_seq_start()
189 node = rb_first(&session->stat_root); in stat_seq_start()
198 struct stat_session *session = s->private; in stat_seq_next() local
204 return rb_first(&session->stat_root); in stat_seq_next()
211 struct stat_session *session = s->private; in stat_seq_stop() local
212 mutex_unlock(&session->stat_mutex); in stat_seq_stop()
217 struct stat_session *session = s->private; in stat_seq_show() local
221 return session->ts->stat_headers(s); in stat_seq_show()
223 return session->ts->stat_show(s, l->stat); in stat_seq_show()
238 struct stat_session *session = inode->i_private; in tracing_stat_open() local
240 ret = stat_seq_init(session); in tracing_stat_open()
246 reset_stat_session(session); in tracing_stat_open()
251 m->private = session; in tracing_stat_open()
260 struct stat_session *session = i->i_private; in tracing_stat_release() local
262 reset_stat_session(session); in tracing_stat_release()
289 static int init_stat_file(struct stat_session *session) in init_stat_file() argument
294 session->file = tracefs_create_file(session->ts->name, 0644, in init_stat_file()
296 session, &tracing_stat_fops); in init_stat_file()
297 if (!session->file) in init_stat_file()
304 struct stat_session *session, *node; in register_stat_tracer() local
324 session = kzalloc(sizeof(*session), GFP_KERNEL); in register_stat_tracer()
325 if (!session) in register_stat_tracer()
328 session->ts = trace; in register_stat_tracer()
329 INIT_LIST_HEAD(&session->session_list); in register_stat_tracer()
330 mutex_init(&session->stat_mutex); in register_stat_tracer()
332 ret = init_stat_file(session); in register_stat_tracer()
334 destroy_session(session); in register_stat_tracer()
340 list_add_tail(&session->session_list, &all_stat_sessions); in register_stat_tracer()