информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеПортрет посетителяСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Syscall_define? 14.06.09 15:05  Число просмотров: 2075
Автор: 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()?
<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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach