The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Доступ к /proc/<ipd>/stat из ядра"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от Berserk email on 18-Янв-07, 19:38 
срочно нужен дельный совет опытного человека.
необходимо получить доступ к данным отображаемых в (user space) /proc/<ipd>/stat  из ядра.

пробовал регистрировать свой файл в proc и посредствам этого перемещаться по связанному списку proc fs.
Был не приятно удивлен не найдя PID-ов в списке.
Кто подскажет, как получить доступ к ним?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от Berserk email(ok) on 18-Янв-07, 20:14 
подскажите хоть где копать. Описания API proc так и не нашел.
Хоть бы кто сказал RTFM что ли.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от exn on 18-Янв-07, 21:35 
>подскажите хоть где копать. Описания API proc так и не нашел.
>Хоть бы кто сказал RTFM что ли.


зачод

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от Berserk email(ok) on 18-Янв-07, 21:54 
>зачод

тоже хорошо

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от BigHo on 19-Янв-07, 12:40 
ничего не понятно. Что регестировать, откуда регестрировать, как проходить - понятно что посредством сего, но чего именно ? Код есть ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от Berserk (ok) on 19-Янв-07, 17:07 
>ничего не понятно. Что регестировать, откуда регестрировать, как проходить - понятно что
>посредством сего, но чего именно ? Код есть ?
что то типа этого
p
            filp = filp_open("/proc/2323/stat", 00, O_RDONLY);
            pi = PROC_I(filp->f_dentry->d_inode);
                if (!pi->op.proc_read)
                    length  = pi->op.proc_read(pi->task, buf);
                printk(KERN_INFO "\n\n%s\n\n", buf);

//          filp_close(filp);

на выходе в dmes должно быть содержимое /proc/2323/stat
все еще не разобрался с proc_read(pi->task,... - не понимаю что за task

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от BigHo on 19-Янв-07, 18:09 
>filp = filp_open("/proc/2323/stat", 00, O_RDONLY);
>            pi = PROC_I(filp->f_dentry->d_inode);
>                if (!pi->op.proc_read)

Вот здесь я на месте ядра сделал бы kernel panic, потому как pi->op.proc_read == NULL :)

>                    length  = pi->op.proc_read(pi->task, buf);


>            
>    printk(KERN_INFO "\n\n%s\n\n", buf);
>
>//          filp_close(filp);

Точно закрывать не надо ?

>на выходе в dmesg должно быть содержимое /proc/2323/stat
>все еще не разобрался с proc_read(pi->task,... - не понимаю что за task

task - усеченная структура процесса, без файловых дескрипторов и без информации о потомках. Любой поток - пользовательский, код драйвера, таймеры, и др. представлен именно как некое задание универсальное задание, которые в идеале могут выполняться паралельно друг от друга. В столь оторваном контексте совсем непонятно правильно он здесь используется, или нет,

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Доступ к /proc/<ipd>/stat из ядра"  
Сообщение от Berserk email(ok) on 19-Янв-07, 21:47 
>>filp = filp_open("/proc/2323/stat", 00, O_RDONLY);
>>            pi = PROC_I(filp->f_dentry->d_inode);
>>                if (!pi->op.proc_read)
>
>Вот здесь я на месте ядра сделал бы kernel panic, потому как pi->op.proc_read == NULL :)
>
>>                    length  = pi->op.proc_read(pi->task, buf);
>
>
>>            
>>    printk(KERN_INFO "\n\n%s\n\n", buf);
>>
>>//          filp_close(filp);
>
>Точно закрывать не надо ?
>
>>на выходе в dmesg должно быть содержимое /proc/2323/stat
>>все еще не разобрался с proc_read(pi->task,... - не понимаю что за task
>
>task - усеченная структура процесса, без файловых дескрипторов и без информации о
>потомках. Любой поток - пользовательский, код драйвера, таймеры, и др. представлен
>именно как некое задание универсальное задание, которые в идеале могут выполняться
>паралельно друг от друга. В столь оторваном контексте совсем непонятно правильно
>он здесь используется, или нет,

Спасибо за ответ.
В ядре я обнаружил функцию идеально подходящую для моих нужд
static ssize_t proc_info_read(struct file * file, char * buf, size_t count, loff_t *ppos);


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру