Lines Matching refs:uid_entry
66 struct uid_entry { struct
176 static struct task_entry *find_task_entry(struct uid_entry *uid_entry, in find_task_entry() argument
181 hash_for_each_possible(uid_entry->task_entries, task_entry, hash, in find_task_entry()
196 static struct task_entry *find_or_register_task(struct uid_entry *uid_entry, in find_or_register_task() argument
202 task_entry = find_task_entry(uid_entry, task); in find_or_register_task()
213 hash_add(uid_entry->task_entries, &task_entry->hash, (unsigned int)pid); in find_or_register_task()
218 static void remove_uid_tasks(struct uid_entry *uid_entry) in remove_uid_tasks() argument
224 hash_for_each_safe(uid_entry->task_entries, bkt_task, in remove_uid_tasks()
231 static void set_io_uid_tasks_zero(struct uid_entry *uid_entry) in set_io_uid_tasks_zero() argument
236 hash_for_each(uid_entry->task_entries, bkt_task, task_entry, hash) { in set_io_uid_tasks_zero()
242 static void add_uid_tasks_io_stats(struct uid_entry *uid_entry, in add_uid_tasks_io_stats() argument
245 struct task_entry *task_entry = find_or_register_task(uid_entry, task); in add_uid_tasks_io_stats()
255 static void compute_io_uid_tasks(struct uid_entry *uid_entry) in compute_io_uid_tasks() argument
260 hash_for_each(uid_entry->task_entries, bkt_task, task_entry, hash) { in compute_io_uid_tasks()
261 compute_io_bucket_stats(&task_entry->io[uid_entry->state], in compute_io_uid_tasks()
268 static void show_io_uid_tasks(struct seq_file *m, struct uid_entry *uid_entry) in show_io_uid_tasks() argument
273 hash_for_each(uid_entry->task_entries, bkt_task, task_entry, hash) { in show_io_uid_tasks()
291 static void remove_uid_tasks(struct uid_entry *uid_entry) {}; in remove_uid_tasks() argument
292 static void set_io_uid_tasks_zero(struct uid_entry *uid_entry) {}; in set_io_uid_tasks_zero() argument
293 static void add_uid_tasks_io_stats(struct uid_entry *uid_entry, in add_uid_tasks_io_stats() argument
295 static void compute_io_uid_tasks(struct uid_entry *uid_entry) {}; in compute_io_uid_tasks() argument
297 struct uid_entry *uid_entry) {} in show_io_uid_tasks() argument
300 static struct uid_entry *find_uid_entry(uid_t uid) in find_uid_entry()
302 struct uid_entry *uid_entry; in find_uid_entry() local
303 hash_for_each_possible(hash_table, uid_entry, hash, uid) { in find_uid_entry()
304 if (uid_entry->uid == uid) in find_uid_entry()
305 return uid_entry; in find_uid_entry()
310 static struct uid_entry *find_or_register_uid(uid_t uid) in find_or_register_uid()
312 struct uid_entry *uid_entry; in find_or_register_uid() local
314 uid_entry = find_uid_entry(uid); in find_or_register_uid()
315 if (uid_entry) in find_or_register_uid()
316 return uid_entry; in find_or_register_uid()
318 uid_entry = kzalloc(sizeof(struct uid_entry), GFP_ATOMIC); in find_or_register_uid()
319 if (!uid_entry) in find_or_register_uid()
322 uid_entry->uid = uid; in find_or_register_uid()
324 hash_init(uid_entry->task_entries); in find_or_register_uid()
326 hash_add(hash_table, &uid_entry->hash, uid); in find_or_register_uid()
328 return uid_entry; in find_or_register_uid()
333 struct uid_entry *uid_entry = NULL; in uid_cputime_show() local
343 hash_for_each(hash_table, bkt, uid_entry, hash) { in uid_cputime_show()
344 uid_entry->active_stime = 0; in uid_cputime_show()
345 uid_entry->active_utime = 0; in uid_cputime_show()
351 if (!uid_entry || uid_entry->uid != uid) in uid_cputime_show()
352 uid_entry = find_or_register_uid(uid); in uid_cputime_show()
353 if (!uid_entry) { in uid_cputime_show()
363 uid_entry->active_utime += utime; in uid_cputime_show()
364 uid_entry->active_stime += stime; in uid_cputime_show()
369 hash_for_each(hash_table, bkt, uid_entry, hash) { in uid_cputime_show()
370 u64 total_utime = uid_entry->utime + in uid_cputime_show()
371 uid_entry->active_utime; in uid_cputime_show()
372 u64 total_stime = uid_entry->stime + in uid_cputime_show()
373 uid_entry->active_stime; in uid_cputime_show()
374 seq_printf(m, "%d: %llu %llu\n", uid_entry->uid, in uid_cputime_show()
402 struct uid_entry *uid_entry; in uid_remove_write() local
429 hash_for_each_possible_safe(hash_table, uid_entry, tmp, in uid_remove_write()
431 if (uid_start == uid_entry->uid) { in uid_remove_write()
432 remove_uid_tasks(uid_entry); in uid_remove_write()
433 hash_del(&uid_entry->hash); in uid_remove_write()
434 kfree(uid_entry); in uid_remove_write()
450 static void add_uid_io_stats(struct uid_entry *uid_entry, in add_uid_io_stats() argument
453 struct io_stats *io_slot = &uid_entry->io[slot]; in add_uid_io_stats()
465 add_uid_tasks_io_stats(uid_entry, task, slot); in add_uid_io_stats()
470 struct uid_entry *uid_entry = NULL; in update_io_stats_all_locked() local
476 hash_for_each(hash_table, bkt, uid_entry, hash) { in update_io_stats_all_locked()
477 memset(&uid_entry->io[UID_STATE_TOTAL_CURR], 0, in update_io_stats_all_locked()
479 set_io_uid_tasks_zero(uid_entry); in update_io_stats_all_locked()
485 if (!uid_entry || uid_entry->uid != uid) in update_io_stats_all_locked()
486 uid_entry = find_or_register_uid(uid); in update_io_stats_all_locked()
487 if (!uid_entry) in update_io_stats_all_locked()
489 add_uid_io_stats(uid_entry, task, UID_STATE_TOTAL_CURR); in update_io_stats_all_locked()
493 hash_for_each(hash_table, bkt, uid_entry, hash) { in update_io_stats_all_locked()
494 compute_io_bucket_stats(&uid_entry->io[uid_entry->state], in update_io_stats_all_locked()
495 &uid_entry->io[UID_STATE_TOTAL_CURR], in update_io_stats_all_locked()
496 &uid_entry->io[UID_STATE_TOTAL_LAST], in update_io_stats_all_locked()
497 &uid_entry->io[UID_STATE_DEAD_TASKS]); in update_io_stats_all_locked()
498 compute_io_uid_tasks(uid_entry); in update_io_stats_all_locked()
502 static void update_io_stats_uid_locked(struct uid_entry *uid_entry) in update_io_stats_uid_locked() argument
507 memset(&uid_entry->io[UID_STATE_TOTAL_CURR], 0, in update_io_stats_uid_locked()
509 set_io_uid_tasks_zero(uid_entry); in update_io_stats_uid_locked()
513 if (from_kuid_munged(user_ns, task_uid(task)) != uid_entry->uid) in update_io_stats_uid_locked()
515 add_uid_io_stats(uid_entry, task, UID_STATE_TOTAL_CURR); in update_io_stats_uid_locked()
519 compute_io_bucket_stats(&uid_entry->io[uid_entry->state], in update_io_stats_uid_locked()
520 &uid_entry->io[UID_STATE_TOTAL_CURR], in update_io_stats_uid_locked()
521 &uid_entry->io[UID_STATE_TOTAL_LAST], in update_io_stats_uid_locked()
522 &uid_entry->io[UID_STATE_DEAD_TASKS]); in update_io_stats_uid_locked()
523 compute_io_uid_tasks(uid_entry); in update_io_stats_uid_locked()
529 struct uid_entry *uid_entry; in uid_io_show() local
536 hash_for_each(hash_table, bkt, uid_entry, hash) { in uid_io_show()
538 uid_entry->uid, in uid_io_show()
539 uid_entry->io[UID_STATE_FOREGROUND].rchar, in uid_io_show()
540 uid_entry->io[UID_STATE_FOREGROUND].wchar, in uid_io_show()
541 uid_entry->io[UID_STATE_FOREGROUND].read_bytes, in uid_io_show()
542 uid_entry->io[UID_STATE_FOREGROUND].write_bytes, in uid_io_show()
543 uid_entry->io[UID_STATE_BACKGROUND].rchar, in uid_io_show()
544 uid_entry->io[UID_STATE_BACKGROUND].wchar, in uid_io_show()
545 uid_entry->io[UID_STATE_BACKGROUND].read_bytes, in uid_io_show()
546 uid_entry->io[UID_STATE_BACKGROUND].write_bytes, in uid_io_show()
547 uid_entry->io[UID_STATE_FOREGROUND].fsync, in uid_io_show()
548 uid_entry->io[UID_STATE_BACKGROUND].fsync); in uid_io_show()
550 show_io_uid_tasks(m, uid_entry); in uid_io_show()
577 struct uid_entry *uid_entry; in uid_procstat_write() local
599 uid_entry = find_or_register_uid(uid); in uid_procstat_write()
600 if (!uid_entry) { in uid_procstat_write()
605 if (uid_entry->state == state) { in uid_procstat_write()
610 update_io_stats_uid_locked(uid_entry); in uid_procstat_write()
612 uid_entry->state = state; in uid_procstat_write()
629 struct uid_entry *uid_entry; in process_notifier() local
638 uid_entry = find_or_register_uid(uid); in process_notifier()
639 if (!uid_entry) { in process_notifier()
645 uid_entry->utime += utime; in process_notifier()
646 uid_entry->stime += stime; in process_notifier()
648 add_uid_io_stats(uid_entry, task, UID_STATE_DEAD_TASKS); in process_notifier()