Ковыряю ядро Linux. Очередные непонятки. Вот есть в ядре такой файл: /include/net/llc_conn.h
, в нём есть функция static inline struct llc_sock *llc_sk(const struct sock *sk)
. Исходник. Сам текст функции:
static inline struct llc_sock *llc_sk(const struct sock *sk)
{
return (struct llc_sock *)sk;
}
Насколько я понимаю, тут указатель на некую структуру sock
будет переделываться на указатель на структуру llc_sock
. Причём начало структуры llc_sock
выглядит так:
struct llc_sock {
/* struct sock must be the first member of llc_sock */
struct sock sk;
struct sockaddr_llc addr; /* address sock is bound to */
...
u32 copied_seq; /* head of yet unread data */
...
То есть, внутри структуры llc_sock
есть структура sock
. Меня интересует следующий вопрос: какое значение будет в copied_seq
после подобного приведения? Насколько я могу судить, то значение copied_seq
может быть любым, а struct sock sk
будет являть собой struct sock sk
из аргумента функции. Правильно ли это?