Re: git: 682b069c5c56 - main - iicbus: add compat32 support for I2C ioctls
- In reply to: Stephen J. Kiernan: "git: 682b069c5c56 - main - iicbus: add compat32 support for I2C ioctls"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 01 Dec 2023 02:01:12 UTC
On 1 Dec 2023, at 01:33, Stephen J. Kiernan <stevek@FreeBSD.org> wrote: > > The branch main has been updated by stevek: > > URL: https://cgit.FreeBSD.org/src/commit/?id=682b069c5c5643d26199cc1b65717f99c98bce9d > > commit 682b069c5c5643d26199cc1b65717f99c98bce9d > Author: Stephen J. Kiernan <stevek@FreeBSD.org> > AuthorDate: 2023-11-29 19:20:45 +0000 > Commit: Stephen J. Kiernan <stevek@FreeBSD.org> > CommitDate: 2023-12-01 01:33:46 +0000 > > iicbus: add compat32 support for I2C ioctls > > Some of the I2C ioctl request structures contain pointers and need to > handle requests from 32-bit applications on 64-bit kernels. > > Obtained from: Juniper Networks, Inc. > Differential Revision: https://reviews.freebsd.org/D42836 > --- > sys/dev/iicbus/iic.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 108 insertions(+), 3 deletions(-) > > diff --git a/sys/dev/iicbus/iic.c b/sys/dev/iicbus/iic.c > index baaa7a096a14..8c9dbb6bc145 100644 > --- a/sys/dev/iicbus/iic.c > +++ b/sys/dev/iicbus/iic.c > @@ -2,6 +2,7 @@ > * SPDX-License-Identifier: BSD-2-Clause > * > * Copyright (c) 1998, 2001 Nicolas Souchu > + * Copyright (c) 2023 Juniper Networks, Inc. > * All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > @@ -27,6 +28,7 @@ > * > */ > #include <sys/param.h> > +#include <sys/abi_compat.h> > #include <sys/bus.h> > #include <sys/conf.h> > #include <sys/fcntl.h> > @@ -57,6 +59,30 @@ struct iic_cdevpriv { > uint8_t addr; > }; > > +#ifdef COMPAT_FREEBSD32 > +struct iic_msg32 { > + uint16_t slave; > + uint16_t flags; > + uint16_t len; > + uint32_t buf; > +}; > + > +struct iiccmd32 { > + u_char slave; > + uint32_t count; > + uint32_t last; > + uint32_t buf; > +}; > + > +struct iic_rdwr_data32 { > + uint32_t msgs; > + uint32_t nmsgs; > +}; > + > +#define I2CWRITE32 _IOW('i', 4, struct iiccmd32) > +#define I2CREAD32 _IOW('i', 5, struct iiccmd32) > +#define I2CRDWR32 _IOW('i', 6, struct iic_rdwr_data32) > +#endif Like I said for smbus, please use _IOC_NEWTYPE. Jess