--- Cannot embed stylesheet: [Errno 2] No such file or directory: '../../../aros.css' --->
| FD_Alloc() | FD_Check() | FD_Free() | FD_GetData() |
| FD_GetOwner() | FD_GetOwnerHooks() | FD_Reserve() | FD_Retain() |
| FD_SetData() | FD_SetOwnerHooks() |
LONG FD_Alloc(
LONG startfd,
fd_owner_t owner,
APTR data,
LONG * outfd );
Allocate a file descriptor slot for the specified owner.
startfd - Starting descriptor number to search from. owner - Descriptor owner identifier. data - Optional owner data. outfd - Pointer that receives the allocated descriptor.
0 on success, or an errno-style error code.
LONG FD_Check(
LONG fd );
Check whether a descriptor slot is available.
fd - Descriptor number to check.
0 if the slot is free, or an errno-style error code.
LONG FD_Free(
LONG fd,
fd_owner_t owner );
Release one reference to a descriptor slot owned by a specific consumer. The slot becomes available only when its last reference is released.
fd - Descriptor number to release. owner - Descriptor owner identifier.
0 on success, or an errno-style error code.
APTR FD_GetData(
LONG fd );
Query the owner data for a descriptor slot.
fd - Descriptor number to query.
Owner data pointer or NULL.
fd_owner_t FD_GetOwner(
LONG fd );
Query the owner of a descriptor slot.
fd - Descriptor number to query.
Owner identifier or FD_OWNER_NONE.
const struct fd_hooks * FD_GetOwnerHooks(
fd_owner_t owner );
Return the operation hooks registered for an owner.
owner - Descriptor owner identifier.
Pointer to the owner's struct fd_hooks, or NULL if none is registered.
LONG FD_Reserve(
LONG fd,
fd_owner_t owner,
APTR data );
Reserve a specific file descriptor slot for the specified owner.
fd - Descriptor number to reserve. owner - Descriptor owner identifier. data - Optional owner data.
0 on success, or an errno-style error code.
LONG FD_Retain(
LONG fd,
fd_owner_t owner );
Retain an existing descriptor reservation for an independent table inheriting the same descriptor number. FD_Free releases one reference; the number remains reserved until the last reference is released. The owner data pointer is shared by all references to the reservation; retaining a number does not retain or copy the object it points to. The owner must keep that object valid until the final FD_Free(), or use NULL as the owner data. A non-final FD_Free() leaves the data pointer unchanged. FD_SetData() replaces it for every reference, not just the calling table. Owners must synchronize data replacement and object destruction with their hook users under their own lock.
fd - Existing descriptor number. owner - Expected descriptor owner.
Zero on success, EBADF if the reservation does not match, EINVAL for FD_OWNER_NONE, or EOVERFLOW if no further reference can be retained.
LONG FD_SetData(
LONG fd,
fd_owner_t owner,
APTR data );
Update the owner data for a descriptor slot.
fd - Descriptor number to update. owner - Descriptor owner identifier. data - Owner data pointer.
0 on success, or an errno-style error code.
LONG FD_SetOwnerHooks(
fd_owner_t owner,
const struct fd_hooks * hooks );
Register (or clear) the operation hooks for an owner. The hooks describe how read()/write()/close()/lseek()/ioctl()/fcntl()/fstat() act on descriptors created by that owner.
owner - Descriptor owner identifier (FD_OWNER_POSIXC, ...). hooks - Pointer to a persistent struct fd_hooks, or NULL to clear.
0 on success, or an errno-style error code.
The hooks table must remain valid for as long as descriptors owned by this owner may be accessed; it is stored by reference, not copied.