Change the size of an open file, zeroing out any new bytes.


The fd_filestat_set_size() function is used to modify the size of an open file identified by a file descriptor. It allows adjusting the size of the file and zeroing out any newly allocated bytes.

In POSIX systems, files have a size attribute that represents the amount of data stored in the file. The fd_filestat_set_size() function enables applications to change the size of an open file. When increasing the file size, any newly allocated bytes are automatically filled with zeros.


  ;;; Note: This is similar to `ftruncate` in POSIX.
  ;;; Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros.
  (@interface func (export "fd_filestat_set_size")
    (param $fd $fd)
    ;;; The desired file size.
    (param $size $filesize)
    (result $error (expected (error $errno)))


  • ctx: A mutable reference to the function environment.
  • fd: The file descriptor of the open file to adjust.
  • st_size: The new size to set for the file.

Return Value

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


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

  • %fd: The file descriptor being modified.
  • %st_size: The new size that the file is set to.


The fd_filestat_set_size() function allows changing the size of an open file identified by the provided file descriptor. If the file size is increased, any newly allocated bytes are zeroed out. This function requires appropriate access rights on the file descriptor, and failure to meet the access requirements will result in an Errno::Access error.