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

📄 rpcserv.c

📁 PNX系列设备驱动 PNX系列设备驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
                  lseek (mac_fd[i], 0L, SEEK_END);
                  break;
               }
         }
#endif
         command->parameters.write_args.retval=
            convert_host_long (
               parm_write (
                  convert_tcs_long (command->parameters.write_args.fildes),
                  IN_BUFFER (command->parameters.write_args.buf),
                  convert_tcs_long (command->parameters.write_args.nbyte)));

         PCI_STABILISE (&command->code, &saved);

         command->returned_errno       = convert_host_errno (last_io_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_LSEEK:

         command->parameters.lseek_args.retval=
            convert_host_long (
               parm_seek (
                  convert_tcs_long (command->parameters.lseek_args.fildes),
                  convert_tcs_long (command->parameters.lseek_args.offset),
                  convert_tcs_seek (command->parameters.lseek_args.whence)));

         command->returned_errno       = convert_host_errno (last_io_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_CLOSE:

         command->parameters.close_args.retval=
            convert_host_long (
               host_close (ninfo,
                  convert_tcs_long (command->parameters.close_args.fildes)));

         command->returned_errno       = convert_host_errno (last_io_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_UNLINK:

         command->parameters.unlink_args.retval=
            convert_host_long (
               unlink (
                  IN_BUFFER (command->parameters.unlink_args.path)));

         command->returned_errno       = convert_host_errno (last_io_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_TIME:

         command->parameters.time_args.retval=
            convert_host_long (
               time ((Pointer) RESULT_BUFFER (command->parameters.time_args.tloc)));

         command->returned_errno       = convert_host_errno (last_io_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_MKTEMP:

         intermediate_result = mktemp ((String) IN_BUFFER (command->parameters.mktemp_args.name_template));

         if (intermediate_result == NULL) {
            command->parameters.mktemp_args.retval = NULL;
         } else {
            strncpy ((String) RESULT_BUFFER (command->parameters.mktemp_args.retval),
                  intermediate_result,
                  convert_tcs_long (command->parameters.mktemp_args.retval_length));
         }

         command->returned_errno       = convert_host_errno (last_io_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_EXIT:

         host_exit (ninfo,
               convert_tcs_long (command->parameters.exit_args.status));

         command->returned_errno       = 0;
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_FCNTL:

         command->parameters.fcntl_args.retval=
            convert_host_long (
               parm_fcntl (
                     convert_tcs_long        (command->parameters.fcntl_args.fildes),
                     convert_tcs_fcntl_cmd   (command->parameters.fcntl_args.cmd),
                     convert_tcs_fcntl_flags (command->parameters.fcntl_args.flags)));

         command->returned_errno       = convert_host_errno (last_io_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_ARGV_ARGC_INFO:

         command->parameters.argv_argc_info_args.argc = convert_tcs_long (ninfo->argc);

         command->parameters.argv_argc_info_args.argument_string_length
            = convert_tcs_long (argument_string_length (ninfo));

         command->returned_errno       = 0;
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_GET_ARGUMENT_STRING:

         pass_argument_string (ninfo,
               RESULT_BUFFER (command->parameters.get_argument_string_args.retval));

         command->returned_errno       = 0;
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_GETENV:

         intermediate_result= getenv (IN_BUFFER (command->parameters.getenv_args.name));

         if (intermediate_result == NULL) {
            command->parameters.getenv_args.retval= NULL;
         } else {
            strncpy (
               RESULT_BUFFER (command->parameters.getenv_args.retval),
               intermediate_result,
               convert_tcs_long (command->parameters.getenv_args.retval_length));
         }

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_TMPNAM:

         intermediate_result = tmpnam (IN_BUFFER (command->parameters.tmpnam_args.name));

         if (intermediate_result == NULL) {
            command->parameters.tmpnam_args.retval= NULL;
         } else {
            strncpy (
               RESULT_BUFFER (command->parameters.tmpnam_args.retval),
               intermediate_result,
               convert_tcs_long (command->parameters.tmpnam_args.retval_length));
         }

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_ACCESS:

         command->parameters.access_args.retval=
            convert_host_long (
               access (
                  IN_BUFFER (command->parameters.access_args.path),
                  convert_tcs_long (command->parameters.access_args.amode)));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_MKDIR:

         command->parameters.mkdir_args.retval=
            convert_host_long (
               mkdir (
                  IN_BUFFER (command->parameters.mkdir_args.path),
                  convert_tcs_long (command->parameters.mkdir_args.mode)));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

#if !defined(_WIN32) && !defined(__MWERKS__)
      case HostCall_LINK:

         command->parameters.link_args.retval=
            convert_host_long (
               link (
                  IN_BUFFER (command->parameters.link_args.path1),
                  IN_BUFFER2(command->parameters.link_args.path2)
               ));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;
#endif

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

      case HostCall_MOVE:

         command->parameters.move_args.retval=
            convert_host_long (
               rename (
                  IN_BUFFER (command->parameters.move_args.path1),
                  IN_BUFFER2(command->parameters.move_args.path2)
               ));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_RMDIR:

         command->parameters.rmdir_args.retval=
            convert_host_long (
               rmdir (
                  IN_BUFFER (command->parameters.rmdir_args.path)));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_PUTENV:

         command->parameters.putenv_args.retval=
            convert_host_long (
               putenv (
                  IN_BUFFER (command->parameters.putenv_args.string)));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_FSYNC:

         command->parameters.fsync_args.retval=
            convert_host_long (
               fsync (
                  convert_tcs_long (command->parameters.fsync_args.fildes)));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_SYNC:

         sync();
         command->parameters.sync_args.retval= 0;

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_OPENDIR:

         command->parameters.opendir_args.retval =
            (void *) convert_host_ulong (
               (UInt32) opendir (
                  IN_BUFFER (command->parameters.opendir_args.path)));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_READDIR:

         command->parameters.readdir_args.retval= (TCS_DIR)
               host_readdir (
                                           command->parameters.readdir_args.retval,
                  (TCS_DIR) RESULT_BUFFER (command->parameters.readdir_args.retval),
                  (DIR *)   convert_tcs_ulong ((UInt32) command->parameters.readdir_args.host_dir));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_REWINDDIR:

         rewinddir ((void *)
               convert_tcs_ulong ((UInt32) command->parameters.rewinddir_args.dir));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_CLOSEDIR:

         command->parameters.closedir_args.retval=
            convert_host_long (
               closedir ((void *)
                     convert_tcs_ulong ((UInt32) command->parameters.closedir_args.dir)));

         command->returned_errno       = convert_host_errno (last_other_errno ());
         command->notification_status  = convert_host_long (HostCall_DONE);
      break;


#ifndef SERIAL_RPC
/* disabled, until scrutinized for serial communication mode */

      /* -------------------------------------------- */
      /* --------------- SOCKET CALLS --------------- */
      /* -------------------------------------------- */

      case HostCall_SOCKET:

         command->parameters.socket_args.retval =
            convert_host_long (
               socket (
                  convert_tcs_af      (command->parameters.socket_args.af),
                  convert_tcs_sock    (command->parameters.socket_args.type),
                  convert_tcs_ipproto (command->parameters.socket_args.protocol)));

         command->returned_errno      = convert_host_errno (last_net_errno ());
         command->notification_status = convert_host_long (HostCall_DONE);
      break;

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

      case HostCall_RECV:

         command->parameters.recv_args.retval=
            convert_host_long (
               recv (
                  convert_tcs_long (command->parameters.recv_args.s),
                  RESULT_BUFFER (command->parameters.recv_args.buf),
                  convert_tcs_long (command->parameters.recv_args.len),
                  convert_tcs_msg  (command->parameters.recv_args.flags)));

         command->returned_errno      = convert_host_errno (last_net_errno ());
         command->notification_status = convert_host_long (HostCall_DONE);
      break;

⌨️ 快捷键说明

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