The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Изучение сорцов freebsd"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Изучение сорцов freebsd"  +/
Сообщение от Аноним (??) on 08-Апр-11, 13:54 
Сижу потихоньку изучаю сорцы, набрел на функцию statfs и не могу ее найти, в sys/sys/mount.h есть декларирование:

__BEGIN_DECLS
...
int     statfs(const char *, struct statfs *);
...
__END_DECLS

но тела функции ни где не нахожу.
В манах она выглядит немного по другому:
int statfs (const char *path struct statfs *buf);

Пинайте, плз, как угодно, только объясните где оно.

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Изучение сорцов freebsd"  +/
Сообщение от Аноним (??) on 08-Апр-11, 14:09 
>[оверквотинг удален]
> найти, в sys/sys/mount.h есть декларирование:
> __BEGIN_DECLS
> ...
> int     statfs(const char *, struct statfs *);
> ...
> __END_DECLS
> но тела функции ни где не нахожу.
> В манах она выглядит немного по другому:
> int statfs (const char *path struct statfs *buf);
> Пинайте, плз, как угодно, только объясните где оно.

может это системный вызов? man statfs

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Изучение сорцов freebsd"  +/
Сообщение от Аноним (??) on 08-Апр-11, 14:11 
> может это системный вызов? man statfs

да, системный. но это же не значит, что тела функции быть не должно?

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Изучение сорцов freebsd"  +/
Сообщение от Вася (??) on 08-Апр-11, 14:24 
>> может это системный вызов? man statfs
> да, системный. но это же не значит, что тела функции быть не
> должно?

Ну, может в объектной библиотеке, уже полукомпилирована :)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Изучение сорцов freebsd"  +/
Сообщение от t (??) on 08-Апр-11, 14:33 
>[оверквотинг удален]
> найти, в sys/sys/mount.h есть декларирование:
> __BEGIN_DECLS
> ...
> int     statfs(const char *, struct statfs *);
> ...
> __END_DECLS
> но тела функции ни где не нахожу.
> В манах она выглядит немного по другому:
> int statfs (const char *path struct statfs *buf);
> Пинайте, плз, как угодно, только объясните где оно.

Это часть libc. Определения смотрите тут:
/sys/kern/syscalls.c и /sys/kern/syscalls.master

и /usr/src/lib/libc

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Изучение сорцов freebsd"  +/
Сообщение от Аноним (??) on 08-Апр-11, 14:45 
> Это часть libc. Определения смотрите тут:
> /sys/kern/syscalls.c и /sys/kern/syscalls.master
> и /usr/src/lib/libc

извиняюсь, но я либо плохо смотрю, либо чего-то не знаю. В /sys/kern/syscalls.master есть ее описание:
396     AUE_STATFS      STD     { int statfs(char *path, \
                                    struct statfs *buf); }
в lib/libc/sys/statfs.2 - лежит ман
но тела функции я так и не вижу

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Изучение сорцов freebsd"  +/
Сообщение от progger (??) on 08-Апр-11, 15:41 
>[оверквотинг удален]
> извиняюсь, но я либо плохо смотрю, либо чего-то не знаю. В /sys/kern/syscalls.master
> есть ее описание:
> 396     AUE_STATFS      STD
>     { int statfs(char *path, \
>            
>            
>            
>   struct statfs *buf); }
> в lib/libc/sys/statfs.2 - лежит ман
> но тела функции я так и не вижу

тело в функции в ядре
научитесь пользоватся поиском по соурсам

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Изучение сорцов freebsd"  +/
Сообщение от Аноним (??) on 08-Апр-11, 15:57 
> тело в функции в ядре
> научитесь пользоватся поиском по соурсам

а можно пальчиком тыкнуть?

# grep -R 'int.*statfs.*(.*char.*path' /usr/src/
/usr/src/sys/amd64/linux32/syscalls.master:99   AUE_STATFS      STD     { int linux_statfs(char *path, \
/usr/src/sys/amd64/linux32/syscalls.master:268  AUE_STATFS      STD     { int linux_statfs64(char *path, size_t bufsize, struct l_statfs64_buf *buf); }
/usr/src/sys/compat/freebsd32/syscalls.master:157       AUE_STATFS      COMPAT4 { int freebsd32_statfs(char *path, \
/usr/src/sys/compat/freebsd32/syscalls.master:396       AUE_STATFS      NOPROTO { int statfs(char *path, \
/usr/src/sys/i386/ibcs2/syscalls.master:35      AUE_STATFS      STD     { int ibcs2_statfs(char *path, \
/usr/src/sys/i386/linux/syscalls.master:99      AUE_STATFS      STD     { int linux_statfs(char *path, \
/usr/src/sys/i386/linux/syscalls.master:268     AUE_STATFS      STD     { int linux_statfs64(char *path, size_t bufsize, struct l_statfs64_buf *buf); }
/usr/src/sys/kern/syscalls.master:157   AUE_STATFS      COMPAT4 { int statfs(char *path, \
/usr/src/sys/kern/syscalls.master:396   AUE_STATFS      STD     { int statfs(char *path, \
/usr/src/sys/sys/syscallsubr.h:int      kern_statfs(struct thread *td, char *path, enum uio_seg pathseg,

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Изучение сорцов freebsd"  +/
Сообщение от gpl77 (ok) on 08-Апр-11, 16:53 
> а можно пальчиком тыкнуть?

grep -R statfs.\*\)\$

....
./kern/vfs_mount.c:__vfs_statfs(struct mount *mp, struct statfs *sbp)
./kern/vfs_syscalls.c:statfs_scale_blocks(struct statfs *sf, long max_size)
./kern/vfs_syscalls.c:statfs(td, uap)
./kern/vfs_syscalls.c:    struct statfs *buf)
./kern/vfs_syscalls.c:fstatfs(td, uap)
./kern/vfs_syscalls.c:kern_fstatfs(struct thread *td, int fd, struct statfs *buf)
./kern/vfs_syscalls.c:freebsd4_statfs(td, uap)
./kern/vfs_syscalls.c:freebsd4_fstatfs(td, uap)
./kern/vfs_syscalls.c:freebsd4_fhstatfs(td, uap)
./kern/vfs_syscalls.c:cvtstatfs(nsp, osp)
./kern/vfs_syscalls.c:fhstatfs(td, uap)
./kern/vfs_syscalls.c:kern_fhstatfs(struct thread *td, fhandle_t fh, struct statfs *buf)

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Изучение сорцов freebsd"  +/
Сообщение от Аноним (??) on 08-Апр-11, 17:14 
>[оверквотинг удален]
> ./kern/vfs_syscalls.c:    struct statfs *buf)
> ./kern/vfs_syscalls.c:fstatfs(td, uap)
> ./kern/vfs_syscalls.c:kern_fstatfs(struct thread *td, int fd, struct statfs *buf)
> ./kern/vfs_syscalls.c:freebsd4_statfs(td, uap)
> ./kern/vfs_syscalls.c:freebsd4_fstatfs(td, uap)
> ./kern/vfs_syscalls.c:freebsd4_fhstatfs(td, uap)
> ./kern/vfs_syscalls.c:cvtstatfs(nsp, osp)
> ./kern/vfs_syscalls.c:fhstatfs(td, uap)
> ./kern/vfs_syscalls.c:kern_fhstatfs(struct thread *td, fhandle_t fh, struct statfs
> *buf)

может я дурачек, а может я не понимаю, потому что я не си-шник, но я не вижу там структуры описанной в мане: statfs(const char *path, struct statfs *buf);

давайте по другому, например в /usr/src/lib/libc/gen/fstab.c есть функция с использованием statfs:

fixfsfile()
{
        static char buf[sizeof(_PATH_DEV) + MNAMELEN];
        struct stat sb;
        struct statfs sf;

        if (strcmp(_fs_fstab.fs_file, "/") != 0)
                return;
        if (statfs("/", &sf) != 0)
                return;
...

когда управление передается statfs, то какой код отрабатывает? где он лежит?

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Изучение сорцов freebsd"  +/
Сообщение от gpl77 (ok) on 08-Апр-11, 17:22 
>>[оверквотинг удален]
>.. а может я не понимаю, потому что я не
> си-шник, но я не вижу там структуры описанной в мане: statfs(const
> char *path, struct statfs *buf);

вы искали тело функции.
вот оно.
почему оно выглядит не так, как вы предполагаете - изучайте, собственно, "сырцы"
ну, или, немножко про С почитайте.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Изучение сорцов freebsd"  +/
Сообщение от Аноним (??) on 10-Апр-11, 09:20 
> ну, или, немножко про С почитайте.

Благодарю, разобрался.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

11. "Изучение сорцов freebsd"  +/
Сообщение от progger (??) on 08-Апр-11, 18:27 
> когда управление передается statfs, то какой код отрабатывает? где он лежит?

странный вы человек
если вы узучаете, так изучайте самостоятельно
в конце концов есть книга freebsd inside
ее почитайте


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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