<lib/fdio/namespace.h> in fdio

Header source code

fdio_flat_namespace struct {:#fdio_flat_namespace}

Declaration source code

Contains parallel arrays of handles, path names, and types.

count

The number of elements in the other arrays of this struct.

handle

handle[i] is the zx_handle_t representing that element in the namespace.

type

type[i] is a handle info entry as defined in zircon/processargs.h by PA_HND.

path

path[i] is the user-readable name of that element (e.g., “/bin”).

fdio_ns_bind(…) {:#fdio_ns_bind}

Declaration source code

Create a new directory within a namespace, bound to the directory-protocol-compatible handle h

The path must be an absolute path like “/x/y/z”. It is relative to the root of the namespace.

Ownership of h is transferred to ns: it is closed on error.

Errors

  • ZX_ERR_BAD_STATE: Namespace is already in use and immutable.

  • ZX_ERR_ALREADY_EXISTS: There is already a mounted directory there.

  • ZX_ERR_NOT_SUPPORTED: path would shadow a mounted directory.

  • ZX_ERR_INVALID_ARGS: path is null or is not an absolute path.

  • ZX_ERR_BAD_PATH: path is not a valid path.

fdio_ns_bind_fd(…) {:#fdio_ns_bind_fd}

Declaration source code

Create a new directory within a namespace, bound to the directory referenced by the file descriptor fd. The path must be an absolute path like “/x/y/z”. It is relative to the root of the namespace.

fd is borrowed by this function, but is not closed on success or error. Closing the fd after success does not affect namespace.

Errors

  • ZX_ERR_BAD_STATE: Namespace is already in use and immutable or fd` cannot be cloned in its current state.

  • `ZX_ERR_ALREADY_EXISTS: There is already a mounted directory there.

  • ZX_ERR_NOT_SUPPORTED: pathwould shadow a mounted directory orfd` cannot be represented as a handle.

  • ZX_ERR_INVALID_ARGS: pathis null or is not an absolute path orfd` is not a valid file descriptor.

  • ZX_ERR_BAD_PATH: path` is not a valid path.

  • ZX_ERR_ACCESS_DENIED: fd` has insufficient rights to clone the underlying object.

fdio_ns_bind_local(…) {:#fdio_ns_bind_local}

Declaration source code

Create a new local entry within a namespace.

Opening the path will run the given on_open with the given context to populate the file. The callback must set the zxio operations table, and can set an internal state inside the provided storage.

The path must be an absolute path like “/x/y/z”. It is relative to the root of the namespace.

Errors

  • ZX_ERR_BAD_STATE: Namespace is already in use and immutable.

  • ZX_ERR_ALREADY_EXISTS: There is already a mounted directory there.

  • ZX_ERR_NOT_SUPPORTED: path would shadow a mounted directory.

  • ZX_ERR_INVALID_ARGS: path is null or is not an absolute path.

  • ZX_ERR_BAD_PATH: path is not a valid path.

fdio_ns_chdir(…) {:#fdio_ns_chdir}

Declaration source code

Changes the current directory to “/” in the provided namespace.

fdio_ns_connect(…) {:#fdio_ns_connect}

Declaration source code

Attempt to connect to a service through the namespace. The handle is always consumed. It will be closed on error or passed to the remote service on success. The path must be an absolute path starting with “/”.

fdio_ns_create(…) {:#fdio_ns_create}

Declaration source code

Create a new, empty namespace

fdio_ns_destroy(…) {:#fdio_ns_destroy}

Declaration source code

Destroy and deallocate a namespace.

If the namespace is in-use, it will be destroyed once it is no longer referenced.

This function always returns ZX_OK.

fdio_ns_export(…) {:#fdio_ns_export}

Declaration source code

On success the caller takes ownership of a fdio_flat_namespace_t containing a flat representation of the exported namespace (the one provided in ‘ns’ or the active root namespace, respectively.) The handles are CLONEs of the handles in the namespace and also belong to the caller.

The whole data structure can be released with fdio_ns_free_flat_ns().

fdio_ns_export_root(…) {:#fdio_ns_export_root}

Declaration source code

fdio_ns_free_flat_ns(…) {:#fdio_ns_free_flat_ns}

Declaration source code

Frees a flat namespace.

Closes all handles contained within ns.

fdio_ns_get_installed(…) {:#fdio_ns_get_installed}

Declaration source code

Retrieve the fdio “global” namespace (if any).

fdio_ns_is_bound(…) {:#fdio_ns_is_bound}

Declaration source code

Whether path is bound to a remote directory in ns.

fdio_ns_open(…) {:#fdio_ns_open}

Declaration source code

Opens an object at path relative to the root of ns with flags asynchronously.

path is looked up in ns. If found, the object at path is opened, passing request to the remote party.

Upon success, request is handed off to the remote party. The operation completes asynchronously, which means a ZX_OK result does not ensure that the requested service actually exists.

path must be absolute.

flags is a fuchsia.io/OpenFlags.

request must be a channel and it is always consumed by this function.

Errors

  • ZX_ERR_INVALID_ARGS: path is invalid.

  • ZX_ERR_NOT_FOUND: A prefix of path cannot be found in ns.

fdio_ns_opendir(…) {:#fdio_ns_opendir}

Declaration source code

Opens the root directory of the namespace as a file descriptor

fdio_ns_service_connect(…) {:#fdio_ns_service_connect}

Declaration source code

Connects to a service at path relative to the root of ns asynchronously.

path is looked up in ns. If found, the object at path is opened, passing request to the remote party.

Upon success, request is handed off to the remote party. The operation completes asynchronously, which means a ZX_OK result does not ensure that the requested service actually exists.

path must be absolute.

request must be a channel and it is always consumed by this function.

Errors

  • ZX_ERR_INVALID_ARGS: path is invalid.

  • ZX_ERR_NOT_FOUND: A prefix of path cannot be found in ns.

fdio_ns_unbind(…) {:#fdio_ns_unbind}

Declaration source code

Unbinds path from a namespace, closing the handle within ns that corresponds to that path when all references to the node go out of scope.

Errors

  • ZX_ERR_NOT_FOUND: path` is not a remote.

  • ZX_ERR_NOT_SUPPORTED: path` is the root of the namespace.

  • ZX_ERR_INVALID_ARGS: path` is null or not an absolute path.

  • ZX_ERR_BAD_PATH: path` is not a valid path.