Hello Chris,

Am 29.07.21 um 02:07 schrieb Chris Johns:
On 29/7/21 1:10 am, Ahamed Husni wrote:


On Wed, 28 Jul 2021, 17:27 Husni Faiz, <ahamedhusn...@gmail.com
<mailto:ahamedhusn...@gmail.com>> wrote:

     Add the conditional macro to prevent the driver from referencing
     the templates which are not imported yet.

     Include functions which adds the hw.usb.template sysctl variable.

     Signed-off-by: Husni Faiz <ahamedhusn...@gmail.com
     <mailto:ahamedhusn...@gmail.com>>
     ---
      freebsd/sys/dev/usb/template/usb_template.c | 4 ++++
      freebsd/sys/dev/usb/usb_device.c            | 8 ++++++--
      2 files changed, 10 insertions(+), 2 deletions(-)

     diff --git a/freebsd/sys/dev/usb/template/usb_template.c
     b/freebsd/sys/dev/usb/template/usb_template.c
     index 0650da15..76567e85 100644
     --- a/freebsd/sys/dev/usb/template/usb_template.c
     +++ b/freebsd/sys/dev/usb/template/usb_template.c
     @@ -1433,12 +1433,15 @@ usb_temp_setup_by_index(struct usb_device *udev,
     uint16_t index)
             usb_error_t err;

             switch (index) {
     +#ifndef __rtems__
             case USB_TEMP_MSC:
                     err = usb_temp_setup(udev, &usb_template_msc);
                     break;
     +#endif /* __rtems__ */
             case USB_TEMP_CDCE:
                     err = usb_temp_setup(udev, &usb_template_cdce);
                     break;
     +#ifndef __rtems__
             case USB_TEMP_MTP:
                     err = usb_temp_setup(udev, &usb_template_mtp);
                     break;
     @@ -1469,6 +1472,7 @@ usb_temp_setup_by_index(struct usb_device *udev,
     uint16_t index)
             case USB_TEMP_CDCEEM:
                     err = usb_temp_setup(udev, &usb_template_cdceem);
                     break;
     +#endif /* __rtems__ */
             default:
                     return (USB_ERR_INVAL);
             }
     diff --git a/freebsd/sys/dev/usb/usb_device.c 
b/freebsd/sys/dev/usb/usb_device.c
     index ee240949..619cae5a 100644
     --- a/freebsd/sys/dev/usb/usb_device.c
     +++ b/freebsd/sys/dev/usb/usb_device.c
     @@ -28,6 +28,10 @@
       * SUCH DAMAGE.
       */

     +#ifdef __rtems__
     +#include <rtems/bsd/modules.h>
     +#endif
     +
      #ifdef USB_GLOBAL_INCLUDE_FILE
      #include USB_GLOBAL_INCLUDE_FILE
      #else
     @@ -123,7 +127,7 @@ int usb_template = USB_TEMPLATE;
      int    usb_template = -1;
      #endif

     -#ifndef __rtems__
     +#if !defined(__rtems__) || defined(RTEMS_BSD_MODULE_DEV_USB_TEMPLATE)

Is doing this supported by the freebsd-to-rtems.py script?

I sure hope that it is. I know that I used similar constructions in the past and it seems that I'm not the only one, because I'm sure that I haven't touched some of these files:

freebsd/crypto/openssl/crypto/init.c:188:# elif !defined(DSO_NONE) && !defined(__rtems__) freebsd/crypto/openssl/crypto/arm_arch.h:13:#if defined(__rtems__) && defined(__arm__) freebsd/contrib/wpa/src/utils/os_unix.c:236:#if defined(__uClinux__) || defined(__sun__) || defined(__rtems__)
freebsd/sbin/ping6/ping6.c:74:#if defined(__rtems__) && defined(INET6)
freebsd/sbin/ping6/ping6.c:2935:#endif /* defined(__rtems__) && defined(INET6) */
freebsd/sys/net/bpf.h:49:#if defined(__rtems__) && !defined(__FreeBSD__)
freebsd/sys/net/bpf.h:51:#endif /* defined(__rtems__) && !defined(__FreeBSD__) */
freebsd/sys/cam/cam_debug.h:49:#if defined(_KERNEL) && !defined(__rtems__)
freebsd/sys/dev/e1000/e1000_osdep.h:256:#if defined(INVARIANTS) && !defined(__rtems__) freebsd/sys/dev/rtwn/usb/rtwn_usb_tx.c:177:#if defined(__rtems__) && defined(CPU_DATA_CACHE_ALIGNMENT) freebsd/sys/dev/rtwn/usb/rtwn_usb_attach.c:122:#if defined(__rtems__) && defined(CPU_DATA_CACHE_ALIGNMENT)
freebsd/sys/dev/pci/pci.c:5403:#if defined(__rtems__) && defined(__i386__)
freebsd/sys/dev/extres/regulator/regulator.c:54:#if !defined(__rtems__) || defined(FDT)
freebsd/sys/dev/gpio/ofw_gpiobus.c:46:#if defined(__rtems__) && defined(FDT)
freebsd/sys/dev/usb/usb_busdma.c:549:#if defined(__rtems__) && defined(CPU_DATA_CACHE_ALIGNMENT) freebsd/sys/dev/usb/usb_busdma.c:599:#if !defined(__rtems__) || USB_NEED_BUSDMA_COHERENT_ALLOC freebsd/sys/dev/usb/usb_busdma.c:620:#if defined(__rtems__) && CPU_DATA_CACHE_ALIGNMENT freebsd/sys/contrib/ck/include/gcc/arm/ck_pr.h:63:#if defined(__FreeBSD__) && !defined(__rtems__) freebsd/sys/kern/subr_sleepqueue.c:152:#if defined(__rtems__) && defined(RTEMS_SMP)
freebsd/sys/kern/subr_sbuf.c:611:#if defined(_KERNEL) && !defined(__rtems__)
freebsd/sys/kern/kern_timeout.c:46:#if defined(__arm__) || defined(__rtems__)
freebsd/sys/sys/sigio.h:69:#elif defined(__rtems__) && defined(_KERNEL)
freebsd/sys/sys/mbuf.h:351:#if defined(__rtems__) && !defined(__i386__)
dhcpcd/dhcp6.c:33:#if defined(__rtems__) && defined(INET6)
dhcpcd/dhcp6.c:2816:#endif /* defined(__rtems__) && defined(INET6) */
dhcpcd/ipv6.c:31:#if defined(__rtems__) && defined(INET6)
dhcpcd/ipv6.c:1052:#endif /* defined(__rtems__) && defined(INET6) */
dhcpcd/ipv6nd.c:31:#if defined(__rtems__) && defined(INET6)
dhcpcd/ipv6nd.c:1840:#endif /* defined(__rtems__) && defined(INET6) */
rtemsbsd/nfsclient/nfs_prot_xdr.c:17:  #if !defined(__rtems__)
rtemsbsd/sys/arm/at91/at91_mci.c:73:#if defined(__rtems__) && defined(LIBBSP_ARM_ATSAM_BSP_H) freebsd-org/contrib/libstdc++/config/cpu/m68k/atomicity.h:53:#elif defined(__rtems__) freebsd-org/contrib/compiler-rt/lib/ubsan/ubsan_platform.h:20: defined(_WIN32) || defined(__Fuchsia__) || defined(__rtems__) freebsd-org/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform.h:18: !defined(__Fuchsia__) && !defined(__rtems__) && \ freebsd-org/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform.h:108:#if defined(__rtems__)

(Hope that get's through the mail well enoguth that it is readable. If not: Just grep for "defined(__rtems__)" yourself.)

I don't think that our script touches the "#ifdef(__rtems__)" except maybe in some special header cases, does it? I thought that's basically how the rebase works: Just copying all that stuff unchanged to freebsd-org and then do a rebase with all changes. The guards are more or less to make it simpler to see what's been added by RTEMS.

Best regards

Christian


Why is the RTEMS_BSD_MODULE_DEV_USB_TEMPLATE needed? >
      SYSCTL_PROC(_hw_usb, OID_AUTO, template,
          CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
          NULL, 0, sysctl_hw_usb_template,
     @@ -255,7 +259,7 @@ sysctl_hw_usb_template(SYSCTL_HANDLER_ARGS)

             return (0);
      }
     -#endif /* __rtems__ */
     +#endif /* !__rtmes__ || RTEMS_BSD_MODULE_DEV_USB_TEMPLATE */

Ah, a typo here (rtmes). Should I send a new set of patches?

Yes it needs to be correct for the script to work but I would check the
freebsd-to-rtems.py script works with these guard comments.

Chris
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel


--
--------------------------------------------
embedded brains GmbH
Herr Christian MAUDERER
Dornierstr. 4
82178 Puchheim
Germany
email: christian.maude...@embedded-brains.de
phone: +49-89-18 94 741 - 18
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to