⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpcsend.c

📁 PNX系列设备驱动 PNX系列设备驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
 *  +-------------------------------------------------------------------+
 *  | Copyright (c) 1995,1996,1997 by Philips Semiconductors.           |
 *  |                                                                   |
 *  | This software  is furnished under a license  and may only be used |
 *  | and copied in accordance with the terms  and conditions of such a |
 *  | license  and with  the inclusion of this  copyright notice.  This |
 *  | software or any other copies of this software may not be provided |
 *  | or otherwise  made available  to any other person.  The ownership |
 *  | and title of this software is not transferred.                    |
 *  |                                                                   |
 *  | The information  in this software  is subject  to change  without |
 *  | any  prior notice  and should not be construed as a commitment by |
 *  | Philips Semiconductors.                                           |
 *  |                                                                   |
 *  | This  code  and  information  is  provided  "as is"  without  any |
 *  | warranty of any kind,  either expressed or implied, including but |
 *  | not limited  to the implied warranties  of merchantability and/or |
 *  | fitness for any particular purpose.                               |
 *  +-------------------------------------------------------------------+
 *
 *
 *  Module name              : RPCSend.c    1.10
 *
 *  Last update              : 12:54:25 - 99/12/10
 *
 *  Title                    : Implementation of HostCall interface
 *
 *  Author                   : Juul van der Spek 
 *
 *  Reviewed                 : 
 *
 *  Revision history         : 
 *
 *  Description              :  
 *
 */

        switch (command->code) {

        /* -------------------------------------------- */

        case HostCall_ISATTY:
        case HostCall_LSEEK:
        case HostCall_CLOSE:
        case HostCall_EXIT:
        case HostCall_ARGV_ARGC_INFO:
        case HostCall_FCNTL:
        case HostCall_SOCKET:
        case HostCall_CLOSESOCKET:
        case HostCall_LISTEN:
        case HostCall_REWINDDIR:
        case HostCall_CLOSEDIR:
        case HostCall_FREEBUFF:
        case HostCall_READBUFF:
        case HostCall_WRITEBUFF:
        case HostCall_FSYNC:
        case HostCall_SYNC:

standard_RESULT_BUFF_DEF:
                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          0,Null,False
                      );
                break;

        /* -------------------------------------------- */

        case HostCall_INETADDR:
                XFER_DATA(
                             command->parameters.inetaddr_args.cp,
                    strlen ( command->parameters.inetaddr_args.cp ) + 1
                );
                goto standard_RESULT_BUFF_DEF;

        /* -------------------------------------------- */

        case HostCall_ACCEPT:
                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.accept_args.addrlen,
                          (Address)&command->parameters.accept_args.addr,
                          True
                      );
                break;

        /* -------------------------------------------- */

        case HostCall_BIND:
                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.bind_args.addrlen,
                          (Address)&command->parameters.bind_args.addr,
                          True
                      );
                break;


        /* -------------------------------------------- */

        case HostCall_CONNECT:
                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.connect_args.addrlen,
                          (Address)&command->parameters.connect_args.addr,
                          True
                      );
                break;

        /* -------------------------------------------- */

        case HostCall_SEND:
                XFER_DATA(
                    command->parameters.send_args.buf,
                    command->parameters.send_args.len
                );
                goto standard_RESULT_BUFF_DEF;

        /* -------------------------------------------- */

        case HostCall_RECV:
                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.recv_args.len,
                          (Address)&command->parameters.recv_args.buf,
                          True
                      );
                break;

        /* -------------------------------------------- */
        /* -------------------------------------------- */
        /* -------------------------------------------- */

        case HostCall_OPEN:

                XFER_DATA(
                           command->parameters.open_args.path,
                    strlen(command->parameters.open_args.path) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_STAT:

                XFER_DATA(
                           command->parameters.stat_args.path,
                    strlen(command->parameters.stat_args.path) + 1
                );
                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          sizeof(*command->parameters.stat_args.buf),
                          (Address)&command->parameters.stat_args.buf,
                          False
                      );
                break;

           /* -------------------------------------------- */

        case HostCall_OPENDLL:

                XFER_DATA(
                           command->parameters.open_dll_args.path,
                    strlen(command->parameters.open_dll_args.path) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_FSTAT:

                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          sizeof(*command->parameters.fstat_args.buf),
                          (Address)&command->parameters.fstat_args.buf,
                          False
                      );
                break;


           /* -------------------------------------------- */

        case HostCall_WRITE:

                XFER_DATA(
                    command->parameters.write_args.buf,
                    command->parameters.write_args.nbyte
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_UNLINK:

                XFER_DATA(
                           command->parameters.unlink_args.path,
                    strlen(command->parameters.unlink_args.path) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_TIME:

                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          sizeof(*command->parameters.time_args.tloc),
                          (Address)&command->parameters.time_args.tloc,
                          False
                      );
                break;

           /* -------------------------------------------- */

        case HostCall_MKTEMP:

                XFER_DATA(
                           command->parameters.mktemp_args.name_template,
                    strlen(command->parameters.mktemp_args.name_template) + 1
                );

                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.mktemp_args.retval_length,
                          (Address)&command->parameters.mktemp_args.retval,
                          False
                      );
                break;

           /* -------------------------------------------- */

        case HostCall_GETENV:

                XFER_DATA(
                           command->parameters.getenv_args.name,
                    strlen(command->parameters.getenv_args.name) + 1
                );

                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.getenv_args.retval_length,
                          (Address)&command->parameters.getenv_args.retval,
                          False
                      );
                break;

           /* -------------------------------------------- */

        case HostCall_TMPNAM:

                XFER_DATA(
                           command->parameters.tmpnam_args.name,
                    strlen(command->parameters.tmpnam_args.name) + 1
                );

                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.tmpnam_args.retval_length,
                          (Address)&command->parameters.tmpnam_args.retval,
                          False
                      );
                break;

           /* -------------------------------------------- */

        case HostCall_GET_ARGUMENT_STRING:

                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.get_argument_string_args.retval_length,
                          (Address)&command->parameters.get_argument_string_args.retval,
                          False
                      );
                break;

           /* -------------------------------------------- */

        case HostCall_MALLOCBUFF:

                shadow_command=
                      RESULT_BUFF_DEF(
                          command,
                          command->parameters.mallocbuff_args.scatter_size
                                  * sizeof(HostCall_MemoryBlock),
                          (Address)&command->parameters.mallocbuff_args.scatter,
                          False
                      );
                break;

           /* -------------------------------------------- */

        case HostCall_ACCESS:

                XFER_DATA(
                           command->parameters.access_args.path,
                    strlen(command->parameters.access_args.path) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_MKDIR:

                XFER_DATA(
                           command->parameters.mkdir_args.path,
                    strlen(command->parameters.mkdir_args.path) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_LINK:

                XFER_DATA(
                           command->parameters.link_args.path1,
                    strlen(command->parameters.link_args.path1) + 1
                );
                XFER_DATA2(
                           command->parameters.link_args.path2,
                    strlen(command->parameters.link_args.path2) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_MOVE:

                XFER_DATA(
                           command->parameters.move_args.path1,
                    strlen(command->parameters.move_args.path1) + 1
                );
                XFER_DATA2(
                           command->parameters.move_args.path2,
                    strlen(command->parameters.move_args.path2) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_RMDIR:

                XFER_DATA(
                           command->parameters.rmdir_args.path,
                    strlen(command->parameters.rmdir_args.path) + 1
                );
                goto standard_RESULT_BUFF_DEF;

           /* -------------------------------------------- */

        case HostCall_PUTENV:

                XFER_DATA(
                           command->parameters.putenv_args.string,
                    strlen(command->parameters.putenv_args.string) + 1
                );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -