информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медАтака на InternetГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Разбираться в незнакомом коде лучше всего с дебаггером. 14.06.09 11:34  Число просмотров: 2274
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я вот пытаюсь все найти реализацию функции pipe() в Linux и
> понять, как она работает. Т.е. нужно узнать внутреннее
> устройство этой функции. Пока нашел вот такой код:
> http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.
> 30.y.git;a=blob;f=fs/pipe.c;h=13414ec45b8d5b42012d8c5fbd56d
> 54df5a96749;hb=HEAD
>
> Но мне не совсем понятно, какая из этих функций и как
> вызывается при вызове pipe(). Не подскажете, что там
> происходит? А то я совсем запутался.
>
> Заранее благодарен :-).
Разбираться в незнакомом коде лучше всего с дебаггером.
Из того что я вижу вызывается sys_pipe, которая вызывает sys_pipe2 без флагов, та в сВою очередь создает пайпы с помощью create_write_pipe/create_read_pipe, затем создает дескрипторы для этих файлов через install_fd, которые и аопирует в юзермод. А вообще я в линуксах не Копенгаген, так что могу ошибаться
<programming>
[Unix] Внутреннее устройство функции pipe() 14.06.09 10:53  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
Я вот пытаюсь все найти реализацию функции pipe() в Linux и понять, как она работает. Т.е. нужно узнать внутреннее устройство этой функции. Пока нашел вот такой код:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.30.y.git;a=blob;f=fs/pipe.c;h=13414ec45b8d5b42012d8c5fbd56d54df5a96749;hb=HEAD

Но мне не совсем понятно, какая из этих функций и как вызывается при вызове pipe(). Не подскажете, что там происходит? А то я совсем запутался.

Заранее благодарен :-).
Разбираться в незнакомом коде лучше всего с дебаггером. 14.06.09 11:34  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Я вот пытаюсь все найти реализацию функции pipe() в Linux и
> понять, как она работает. Т.е. нужно узнать внутреннее
> устройство этой функции. Пока нашел вот такой код:
> http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.
> 30.y.git;a=blob;f=fs/pipe.c;h=13414ec45b8d5b42012d8c5fbd56d
> 54df5a96749;hb=HEAD
>
> Но мне не совсем понятно, какая из этих функций и как
> вызывается при вызове pipe(). Не подскажете, что там
> происходит? А то я совсем запутался.
>
> Заранее благодарен :-).
Разбираться в незнакомом коде лучше всего с дебаггером.
Из того что я вижу вызывается sys_pipe, которая вызывает sys_pipe2 без флагов, та в сВою очередь создает пайпы с помощью create_write_pipe/create_read_pipe, затем создает дескрипторы для этих файлов через install_fd, которые и аопирует в юзермод. А вообще я в линуксах не Копенгаген, так что могу ошибаться
Syscall_define? 14.06.09 15:05  
Автор: n0xi0uzz <Черкасов Виктор> Статус: Member
<"чистая" ссылка>
> Разбираться в незнакомом коде лучше всего с дебаггером.
> Из того что я вижу вызывается sys_pipe, которая вызывает
> sys_pipe2 без флагов, та в сВою очередь создает пайпы с
> помощью create_write_pipe/create_read_pipe, затем создает
> дескрипторы для этих файлов через install_fd, которые и
> аопирует в юзермод. А вообще я в линуксах не Копенгаген,
> так что могу ошибаться

То есть
1081 SYSCALL_DEFINE1(pipe, int __user *, fildes)
1082 {
1083         return sys_pipe2(fildes, 0);
1084 }

---
— то sys_pipe(), а
1065 SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags)
1066 {
1067         int fd[2];
1068         int error;
1069
1070         error = do_pipe_flags(fd, flags);
1071         if (!error) {
1072                 if (copy_to_user(fildes, fd, sizeof(fd))) {
1073                         sys_close(fd[0]);
1074                         sys_close(fd[1]);
1075                         error = -EFAULT;
1076                 }
1077         }
1078         return error;
1079 }

---
это определение функции sys_pipe2()?
Да. А циферка после названия макроса - количество аргументов сискола 15.06.09 08:11  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach