Lines Matching refs:session
47 static void __reset_stat_session(struct stat_session *session) in __reset_stat_session() argument
51 rbtree_postorder_for_each_entry_safe(snode, n, &session->stat_root, node) { in __reset_stat_session()
52 if (session->ts->stat_release) in __reset_stat_session()
53 session->ts->stat_release(snode->stat); in __reset_stat_session()
57 session->stat_root = RB_ROOT; in __reset_stat_session()
60 static void reset_stat_session(struct stat_session *session) in reset_stat_session() argument
62 mutex_lock(&session->stat_mutex); in reset_stat_session()
63 __reset_stat_session(session); in reset_stat_session()
64 mutex_unlock(&session->stat_mutex); in reset_stat_session()
67 static void destroy_session(struct stat_session *session) in destroy_session() argument
69 tracefs_remove(session->file); in destroy_session()
70 __reset_stat_session(session); in destroy_session()
71 mutex_destroy(&session->stat_mutex); in destroy_session()
72 kfree(session); in destroy_session()
123 static int stat_seq_init(struct stat_session *session) in stat_seq_init() argument
125 struct tracer_stat *ts = session->ts; in stat_seq_init()
126 struct rb_root *root = &session->stat_root; in stat_seq_init()
131 guard(mutex)(&session->stat_mutex); in stat_seq_init()
132 __reset_stat_session(session); in stat_seq_init()
163 __reset_stat_session(session); in stat_seq_init()
170 struct stat_session *session = s->private; in stat_seq_start() local
176 mutex_lock(&session->stat_mutex); in stat_seq_start()
179 if (session->ts->stat_headers) { in stat_seq_start()
185 node = rb_first(&session->stat_root); in stat_seq_start()
194 struct stat_session *session = s->private; in stat_seq_next() local
200 return rb_first(&session->stat_root); in stat_seq_next()
207 struct stat_session *session = s->private; in stat_seq_stop() local
208 mutex_unlock(&session->stat_mutex); in stat_seq_stop()
213 struct stat_session *session = s->private; in stat_seq_show() local
217 return session->ts->stat_headers(s); in stat_seq_show()
219 return session->ts->stat_show(s, l->stat); in stat_seq_show()
234 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()
290 static int init_stat_file(struct stat_session *session) in init_stat_file() argument
297 session->file = tracefs_create_file(session->ts->name, TRACE_MODE_WRITE, in init_stat_file()
298 stat_dir, session, in init_stat_file()
300 if (!session->file) in init_stat_file()
307 struct stat_session *session, *node; in register_stat_tracer() local
325 session = kzalloc(sizeof(*session), GFP_KERNEL); in register_stat_tracer()
326 if (!session) in register_stat_tracer()
329 session->ts = trace; in register_stat_tracer()
330 INIT_LIST_HEAD(&session->session_list); in register_stat_tracer()
331 mutex_init(&session->stat_mutex); in register_stat_tracer()
333 ret = init_stat_file(session); in register_stat_tracer()
335 destroy_session(session); in register_stat_tracer()
340 list_add_tail(&session->session_list, &all_stat_sessions); in register_stat_tracer()