Flavio Cruz, le dim. 09 févr. 2025 22:36:30 -0500, a ecrit:
> * pfinet/linux-src/net/ipv4/{tcp,udp}_ipv4.c: mark lookup functions as
> extern since they are used in another module (icmp.c) and shouldn't be
> removed.
> diff --git a/pfinet/linux-src/net/ipv4/tcp_ipv4.c
> b/pfinet/linux-src/net/ipv4/tcp_ipv4.c
> index 8a5f7175..e67137e4 100644
> --- a/pfinet/linux-src/net/ipv4/tcp_ipv4.c
> +++ b/pfinet/linux-src/net/ipv4/tcp_ipv4.c
> @@ -448,7 +448,7 @@ hit:
> return sk;
> }
>
> -__inline__ struct sock *tcp_v4_lookup(u32 saddr, u16 sport, u32 daddr, u16
> dport, int dif)
> +extern __inline__ struct sock *tcp_v4_lookup(u32 saddr, u16 sport, u32
> daddr, u16 dport, int dif)
> {
> return __tcp_v4_lookup(0, saddr, sport, daddr, dport, dif);
> }
I don't remember the details of what we currently have, but iirc in
some compilation cases, setting extern inline on a function tells the
compiler that this is a possible inline but if the compiler prefers not
to inline, it can just emit a reference, and a definition is available
somewhere else. Thus why we have FOO_EI in variouis headers headers.
It'd probably be simpler to just drop the __inline__ keyword, it's not
that performance sensitive?
> diff --git a/pfinet/linux-src/net/ipv4/udp.c b/pfinet/linux-src/net/ipv4/udp.c
> index 36dc801a..b9fa8c63 100644
> --- a/pfinet/linux-src/net/ipv4/udp.c
> +++ b/pfinet/linux-src/net/ipv4/udp.c
> @@ -272,7 +272,7 @@ struct sock *udp_v4_lookup_longway(u32 saddr, u16 sport,
> u32 daddr, u16 dport, i
> return result;
> }
>
> -__inline__ struct sock *udp_v4_lookup(u32 saddr, u16 sport, u32 daddr, u16
> dport, int dif)
> +extern __inline__ struct sock *udp_v4_lookup(u32 saddr, u16 sport, u32
> daddr, u16 dport, int dif)
> {
> struct sock *sk;
>