Documentation
WASIX
fd_dup

fd_dup()

Duplicates a file handle.

Description

The fd_dup() function duplicates a file handle, creating a new file handle that is a duplicate of the original. The duplicated file handle refers to the same underlying file or resource as the original file handle.

Syntax

  (@interface func (export "fd_dup")
    (param $fd $fd)
    (result $error (expected $fd (error $errno)))
  )

Parameters

  • ctx: A mutable reference to the function environment.
  • fd: The file handle to be cloned.
  • ret_fd: A WebAssembly memory pointer where the new file handle will be stored.

Return Value

The function returns an Errno value indicating the success or failure of the operation.

Logging

This function has been instrumented with debug-level logging. It will log the following information:

  • %fd: The file handle being duplicated.
  • ret_fd: The new file handle that is a duplicate of the original.

Note

The fd_dup() function duplicates a file handle. It takes the file handle fd to be cloned and a WebAssembly memory pointer ret_fd where the new file handle will be stored.

The function retrieves the memory view and the file system state from the WASI environment using the function context. It then calls the clone_fd() method on the file system state to duplicate the file handle. The clone_fd() method creates a new file handle that is a duplicate of the original file handle.

The duplicated file handle is stored in the WebAssembly memory using the provided memory pointer ret_fd.

The function returns an Errno value to indicate the success or failure of the operation. If the file handle is successfully duplicated, it returns Errno::Success. Otherwise, it returns an appropriate error code.