Messages in this thread | | | Date | Tue, 30 Aug 2022 11:44:59 +0300 (EEST) | From | Ilpo Järvinen <> | Subject | Re: [PATCH v2 4/4] serial: Add kserial_rs485 to avoid wasted space due to .padding |
| |
On Tue, 30 Aug 2022, Jiri Slaby wrote:
> On 30. 08. 22, 9:29, Ilpo Järvinen wrote: > > --- a/include/linux/serial_core.h > > +++ b/include/linux/serial_core.h > > @@ -31,6 +31,29 @@ struct serial_struct; > ... > > + * Must match with struct serial_rs485 in include/uapi/linux/serial.h > > excluding > > + * the padding. > > Have you considered BUILD_BUG_ON() checks with few offset_of()s to enforce the > above?
It's all enforced at the end of serial_core.c already. Would you perhaps prefer I'd put them elsewhere or is it fine as is?
/* * Compile-time asserts for struct kserial_rs485 and struct serial_rs485 equality * (except padding). */ static_assert(offsetof(struct kserial_rs485, flags) == offsetof(struct serial_rs485, flags)); static_assert(offsetof(struct kserial_rs485, delay_rts_before_send) == offsetof(struct serial_rs485, delay_rts_before_send)); static_assert(offsetof(struct kserial_rs485, delay_rts_after_send) == offsetof(struct serial_rs485, delay_rts_after_send)); static_assert(offsetof(struct kserial_rs485, addr_recv) == offsetof(struct serial_rs485, addr_recv)); static_assert(offsetof(struct kserial_rs485, addr_dest) == offsetof(struct serial_rs485, addr_dest)); static_assert(sizeof(struct kserial_rs485) <= sizeof(struct serial_rs485));
-- i.
> > +struct kserial_rs485 { > > + __u32 flags; > > + __u32 delay_rts_before_send; > > + __u32 delay_rts_after_send; > > + struct { > > + __u8 addr_recv; > > + __u8 addr_dest; > > + }; > > +};
| |