Как я могу получить идентификатор сеанса текущей задачи в программе BPF?

Вспомогательная функция BPF bpf_get_current_task возвращает указатель на task_struct текущей задачи. Как я могу использовать это в программе BPF для получения идентификатора сеанса текущей задачи?


person dippynark    schedule 18.02.2018    source источник
comment
Читая определение struct task_struct в файле include/linux/sched.h из дерева ядра, я вижу, что есть атрибут sessionid. Это то, что вы ищите? Я не очень хорошо разбираюсь в программе трассировки, но если да, то, возможно, вы можете прочитать ее с помощью bpf_probe_read() из task_struct, которое вы получили?   -  person Qeole    schedule 19.02.2018
comment
@Qeole Я просмотрел реализацию системного вызова getsid для вдохновения, которая следует за указателем group_leader task_struct (аналогично здесь stackoverflow.com/questions/48777124/), но у меня проблемы с указателем group_leader, равным нулю, поэтому Мне было интересно, есть ли особый способ сделать это в программе BPF - возможно, идентификатор сеанса доступен только тогда, когда функция ядра вызывается из пользовательского пространства (т.е. системный вызов), а не вызывается самим ядром   -  person dippynark    schedule 19.02.2018
comment
Ok. Извините, я не знаю. Если вы не получили ответа здесь, другим каналом помощи может быть разработчик iovisor. список рассылки.   -  person Qeole    schedule 19.02.2018
comment
@Qeole niiice, спасибо за это, жду подтверждения подписки :)   -  person dippynark    schedule 20.02.2018