The OpenNET Project / Index page

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

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

"понять 'struct proto' и 'struct proto_ops' в ядре"  +/
Сообщение от cruz7 on 06-Сен-14, 18:23 
Приветствую,

Пытаюсь разобраться в коде tcp/ip в ядре (2.6.35), конкретно - socket layer.


Я понимаю, что proto_ops нужна для определения операций на сокете, например bind/connect/accept, и каждый сокет (struct sock) имеет указатель на proto_ops.

Кроме того, есть также struct proto, который описывает новый протокол, эта структура также содержит указатели на методы для accept/bind/setsockopt/getsockopt и пр.

Но нигде в коде в $linux/net/ я не встретил примененения методов определенных в 'struct proto', кем и где они задействованы?

Буду признателен за пояснения. Спасибо.

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

Оглавление

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


1. "понять 'struct proto' и 'struct proto_ops' в ядре"  +/
Сообщение от pavlinux (ok) on 07-Сен-14, 18:21 
> Но нигде в коде в $linux/net/ я не встретил

net/core/sock.c


int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
                         struct msghdr *msg, size_t size, int flags)
{
        struct sock *sk = sock->sk;
        int addr_len = 0;
        int err;

        /* тута есть */  
        err = sk->sk_prot->recvmsg(iocb, sk, msg, size, flags & MSG_DONTWAIT, flags & ~MSG_DONTWAIT, &addr_len);
         if (err >= 0)
                 msg->msg_namelen = addr_len;
         return err;
}


> примененения методов определенных в 'struct proto', кем и где они задействованы?

Начинай ковырять с функции sk_alloc()

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

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

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


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor