--- freebsd/usr.sbin/i2c/i2c.c | 35 +++++++++++++++++++ libbsd.py | 2 ++ rtemsbsd/include/machine/rtems-bsd-commands.h | 2 ++ rtemsbsd/include/rtems/netcmds-config.h | 2 ++ rtemsbsd/rtems/rtems-bsd-shell-i2c.c | 35 +++++++++++++++++++ 5 files changed, 76 insertions(+) create mode 100644 rtemsbsd/rtems/rtems-bsd-shell-i2c.c
diff --git a/freebsd/usr.sbin/i2c/i2c.c b/freebsd/usr.sbin/i2c/i2c.c index 084682a1..840f78f6 100644 --- a/freebsd/usr.sbin/i2c/i2c.c +++ b/freebsd/usr.sbin/i2c/i2c.c @@ -28,6 +28,13 @@ * SUCH DAMAGE. */ +#ifdef __rtems__ +#define __need_getopt_newlib +#include <getopt.h> +#include <machine/rtems-bsd-program.h> +#include <machine/rtems-bsd-commands.h> +#endif /* __rtems__ */ + #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); @@ -560,6 +567,24 @@ err2: return (1); } +#ifdef __rtems__ +static int main(int argc, char *argv[]); + +int +rtems_bsd_command_i2c(int argc, char *argv[]) +{ + int exit_code; + void *data_begin; + size_t data_size; + + rtems_bsd_program_lock(); + exit_code = rtems_bsd_program_call_main("i2c", main, argc, argv); + rtems_bsd_program_unlock(); + + return exit_code; +} +#endif /* __rtems__ */ + int main(int argc, char** argv) { @@ -568,6 +593,16 @@ main(int argc, char** argv) char *dev, *skip_addr, *i2c_buf; int error, chunk_size, i, j, ch; +#ifdef __rtems__ + struct getopt_data getopt_data; + memset(&getopt_data, 0, sizeof(getopt_data)); +#define optind getopt_data.optind +#define optarg getopt_data.optarg +#define opterr getopt_data.opterr +#define optopt getopt_data.optopt +#define getopt(argc, argv, opt) getopt_r(argc, argv, "+" opt, &getopt_data) +#endif /* __rtems__ */ + errno = 0; error = 0; diff --git a/libbsd.py b/libbsd.py index 6ad046b8..12d4c2ed 100644 --- a/libbsd.py +++ b/libbsd.py @@ -176,6 +176,7 @@ class rtems(builder.Module): 'rtems/rtems-bsd-rc-conf.c', 'rtems/rtems-bsd-set-if-input.c', 'rtems/rtems-bsd-shell-arp.c', + 'rtems/rtems-bsd-shell-i2c.c', 'rtems/rtems-bsd-shell-ifconfig.c', 'rtems/rtems-bsd-shell-netstat.c', 'rtems/rtems-bsd-shell-pfctl.c', @@ -2990,6 +2991,7 @@ class user_space(builder.Module): 'usr.bin/netstat/unix.c', 'usr.bin/vmstat/vmstat.c', 'usr.sbin/arp/arp.c', + 'usr.sbin/i2c/i2c.c', ], mm.generator['source'](['-DINET']) ) diff --git a/rtemsbsd/include/machine/rtems-bsd-commands.h b/rtemsbsd/include/machine/rtems-bsd-commands.h index 1b022902..f5f2955a 100644 --- a/rtemsbsd/include/machine/rtems-bsd-commands.h +++ b/rtemsbsd/include/machine/rtems-bsd-commands.h @@ -54,6 +54,8 @@ int rtems_bsd_command_netstat(int argc, char **argv); int rtems_bsd_command_pfctl(int argc, char **argv); +int rtems_bsd_command_i2c(int argc, char **argv); + int rtems_bsd_command_ping(int argc, char **argv); int rtems_bsd_command_ping6(int argc, char **argv); diff --git a/rtemsbsd/include/rtems/netcmds-config.h b/rtemsbsd/include/rtems/netcmds-config.h index f8dcdcdc..4d72a4fa 100644 --- a/rtemsbsd/include/rtems/netcmds-config.h +++ b/rtemsbsd/include/rtems/netcmds-config.h @@ -26,6 +26,8 @@ extern rtems_shell_cmd_t rtems_shell_ARP_Command; extern rtems_shell_cmd_t rtems_shell_PFCTL_Command; +extern rtems_shell_cmd_t rtems_shell_I2C_Command; + extern rtems_shell_cmd_t rtems_shell_PING_Command; extern rtems_shell_cmd_t rtems_shell_PING6_Command; diff --git a/rtemsbsd/rtems/rtems-bsd-shell-i2c.c b/rtemsbsd/rtems/rtems-bsd-shell-i2c.c new file mode 100644 index 00000000..2e1da406 --- /dev/null +++ b/rtemsbsd/rtems/rtems-bsd-shell-i2c.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2019 Vijay Kumar Banerjee <vijaykumar9...@gmail.com. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <rtems/netcmds-config.h> +#include <machine/rtems-bsd-commands.h> + +rtems_shell_cmd_t rtems_shell_I2C_Command = { + .name = "i2c", + .usage = "i2c [args]", + .topic = "i2c", + .command = rtems_bsd_command_i2c +}; -- 2.20.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel