информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСетевые кракеры и правда о деле ЛевинаГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach