diff options
Diffstat (limited to 'usr/src/boot/lib/libstand/libstand.3')
-rw-r--r-- | usr/src/boot/lib/libstand/libstand.3 | 676 |
1 files changed, 0 insertions, 676 deletions
diff --git a/usr/src/boot/lib/libstand/libstand.3 b/usr/src/boot/lib/libstand/libstand.3 deleted file mode 100644 index 42289c1bce..0000000000 --- a/usr/src/boot/lib/libstand/libstand.3 +++ /dev/null @@ -1,676 +0,0 @@ -.\" Copyright (c) Michael Smith -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd August 6, 2004 -.Dt LIBSTAND 3 -.Os -.Sh NAME -.Nm libstand -.Nd support library for standalone executables -.Sh SYNOPSIS -.In stand.h -.Sh DESCRIPTION -The -.Nm -library provides a set of supporting functions for standalone -applications, mimicking where possible the standard -.Bx -programming -environment. -The following sections group these functions by kind. -Unless specifically described here, see the corresponding section 3 -manpages for the given functions. -.Sh STRING FUNCTIONS -String functions are available as documented in -.Xr string 3 -and -.Xr bstring 3 . -.Sh MEMORY ALLOCATION -.Bl -hang -width 10n -.It Xo -.Ft "void *" -.Fn malloc "size_t size" -.Xc -.Pp -Allocate -.Fa size -bytes of memory from the heap using a best-fit algorithm. -.It Xo -.Ft void -.Fn free "void *ptr" -.Xc -.Pp -Free the allocated object at -.Fa ptr . -.It Xo -.Ft void -.Fn setheap "void *start" "void *limit" -.Xc -.Pp -Initialise the heap. -This function must be called before calling -.Fn alloc -for the first time. -The region between -.Fa start -and -.Fa limit -will be used for the heap; attempting to allocate beyond this will result -in a panic. -.It Xo -.Ft "char *" -.Fn sbrk "int junk" -.Xc -.Pp -Provides the behaviour of -.Fn sbrk 0 , -i.e., returns the highest point that the heap has reached. -This value can -be used during testing to determine the actual heap usage. -The -.Fa junk -argument is ignored. -.El -.Sh ENVIRONMENT -A set of functions are provided for manipulating a flat variable space similar -to the traditional shell-supported environment. -Major enhancements are support -for set/unset hook functions. -.Bl -hang -width 10n -.It Xo -.Ft "char *" -.Fn getenv "const char *name" -.Xc -.It Xo -.Ft int -.Fn setenv "const char *name" "const char *value" "int overwrite" -.Xc -.It Xo -.Ft int -.Fn putenv "const char *string" -.Xc -.It Xo -.Ft int -.Fn unsetenv "const char *name" -.Xc -.Pp -These functions behave similarly to their standard library counterparts. -.It Xo -.Ft "struct env_var *" -.Fn env_getenv "const char *name" -.Xc -.Pp -Looks up a variable in the environment and returns its entire -data structure. -.It Xo -.Ft int -.Fn env_setenv "const char *name" "int flags" "const void *value" "ev_sethook_t sethook" "ev_unsethook_t unsethook" -.Xc -.Pp -Creates a new or sets an existing environment variable called -.Fa name . -If creating a new variable, the -.Fa sethook -and -.Fa unsethook -arguments may be specified. -.Pp -The set hook is invoked whenever an attempt -is made to set the variable, unless the EV_NOHOOK flag is set. -Typically -a set hook will validate the -.Fa value -argument, and then call -.Fn env_setenv -again with EV_NOHOOK set to actually save the value. -The predefined function -.Fn env_noset -may be specified to refuse all attempts to set a variable. -.Pp -The unset hook is invoked when an attempt is made to unset a variable. -If it -returns zero, the variable will be unset. -The predefined function -.Fa env_nounset -may be used to prevent a variable being unset. -.El -.Sh STANDARD LIBRARY SUPPORT -.Bl -hang -width 10n -.It Xo -.Ft int -.Fn getopt "int argc" "char * const *argv" "const char *optstring" -.Xc -.It Xo -.Ft long -.Fn strtol "const char *nptr" "char **endptr" "int base" -.Xc -.It Xo -.Ft void -.Fn srandom "unsigned long seed" -.Xc -.It Xo -.Ft "unsigned long" -.Fn random void -.Xc -.It Xo -.Ft "char *" -.Fn strerror "int error" -.Xc -.Pp -Returns error messages for the subset of errno values supported by -.Nm . -.It Fn assert expression -.Pp -Requires -.In assert.h . -.It Xo -.Ft int -.Fn setjmp "jmp_buf env" -.Xc -.It Xo -.Ft void -.Fn longjmp "jmp_buf env" "int val" -.Xc -.Pp -Defined as -.Fn _setjmp -and -.Fn _longjmp -respectively as there is no signal state to manipulate. -Requires -.In setjmp.h . -.El -.Sh CHARACTER I/O -.Bl -hang -width 10n -.It Xo -.Ft void -.Fn gets "char *buf" -.Xc -.Pp -Read characters from the console into -.Fa buf . -All of the standard cautions apply to this function. -.It Xo -.Ft void -.Fn ngets "char *buf" "int size" -.Xc -.Pp -Read at most -.Fa size -- 1 characters from the console into -.Fa buf . -If -.Fa size -is less than 1, the function's behaviour is as for -.Fn gets . -.It Xo -.Ft int -.Fn fgetstr "char *buf" "int size" "int fd" -.Xc -.Pp -Read a line of at most -.Fa size -characters into -.Fa buf . -Line terminating characters are stripped, and the buffer is always -.Dv NUL -terminated. -Returns the number of characters in -.Fa buf -if successful, or -1 if a read error occurs. -.It Xo -.Ft int -.Fn printf "const char *fmt" "..." -.Xc -.It Xo -.Ft void -.Fn vprintf "const char *fmt" "va_list ap" -.Xc -.It Xo -.Ft int -.Fn sprintf "char *buf" "const char *fmt" "..." -.Xc -.It Xo -.Ft void -.Fn vsprintf "char *buf" "const char *fmt" "va_list ap" -.Xc -.Pp -The *printf functions implement a subset of the standard -.Fn printf -family functionality and some extensions. -The following standard conversions -are supported: c,d,n,o,p,s,u,x. -The following modifiers are supported: -+,-,#,*,0,field width,precision,l. -.Pp -The -.Li b -conversion is provided to decode error registers. -Its usage is: -.Bd -ragged -offset indent -printf( -.Qq reg=%b\en , -regval, -.Qq <base><arg>* -); -.Ed -.Pp -where <base> is the output expressed as a control character, e.g.\& \e10 gives -octal, \e20 gives hex. -Each <arg> is a sequence of characters, the first of -which gives the bit number to be inspected (origin 1) and the next characters -(up to a character less than 32) give the text to be displayed if the bit is set. -Thus -.Bd -ragged -offset indent -printf( -.Qq reg=%b\en , -3, -.Qq \e10\e2BITTWO\e1BITONE -); -.Ed -.Pp -would give the output -.Bd -ragged -offset indent -reg=3<BITTWO,BITONE> -.Ed -.Pp -The -.Li D -conversion provides a hexdump facility, e.g. -.Bd -ragged -offset indent -printf( -.Qq %6D , -ptr, -.Qq \&: -); gives -.Qq XX:XX:XX:XX:XX:XX -.Ed -.Bd -ragged -offset indent -printf( -.Qq %*D , -len, -ptr, -.Qq "\ " -); gives -.Qq XX XX XX ... -.Ed -.El -.Sh CHARACTER TESTS AND CONVERSIONS -.Bl -hang -width 10n -.It Xo -.Ft int -.Fn isupper "int c" -.Xc -.It Xo -.Ft int -.Fn islower "int c" -.Xc -.It Xo -.Ft int -.Fn isspace "int c" -.Xc -.It Xo -.Ft int -.Fn isdigit "int c" -.Xc -.It Xo -.Ft int -.Fn isxdigit "int c" -.Xc -.It Xo -.Ft int -.Fn isascii "int c" -.Xc -.It Xo -.Ft int -.Fn isalpha "int c" -.Xc -.It Xo -.Ft int -.Fn toupper "int c" -.Xc -.It Xo -.Ft int -.Fn tolower "int c" -.Xc -.El -.Sh FILE I/O -.Bl -hang -width 10n -.It Xo -.Ft int -.Fn open "const char *path" "int flags" -.Xc -.Pp -Similar to the behaviour as specified in -.Xr open 2 , -except that file creation is not supported, so the mode parameter is not -required. -The -.Fa flags -argument may be one of O_RDONLY, O_WRONLY and O_RDWR (although no file systems -currently support writing). -.It Xo -.Ft int -.Fn close "int fd" -.Xc -.It Xo -.Ft void -.Fn closeall void -.Xc -.Pp -Close all open files. -.It Xo -.Ft ssize_t -.Fn read "int fd" "void *buf" "size_t len" -.Xc -.It Xo -.Ft ssize_t -.Fn write "int fd" "void *buf" "size_t len" -.Xc -.Pp -(No file systems currently support writing.) -.It Xo -.Ft off_t -.Fn lseek "int fd" "off_t offset" "int whence" -.Xc -.Pp -Files being automatically uncompressed during reading cannot seek backwards -from the current point. -.It Xo -.Ft int -.Fn stat "const char *path" "struct stat *sb" -.Xc -.It Xo -.Ft int -.Fn fstat "int fd" "struct stat *sb" -.Xc -.Pp -The -.Fn stat -and -.Fn fstat -functions only fill out the following fields in the -.Fa sb -structure: st_mode,st_nlink,st_uid,st_gid,st_size. -The -.Nm tftp -file system cannot provide meaningful values for this call, and the -.Nm cd9660 -file system always reports files having uid/gid of zero. -.El -.Sh PAGER -The -.Nm -library supplies a simple internal pager to ease reading the output of large -commands. -.Bl -hang -width 10n -.It Xo -.Ft void -.Fn pager_open -.Xc -.Pp -Initialises the pager and tells it that the next line output will be the top of the -display. -The environment variable LINES is consulted to determine the number of -lines to be displayed before pausing. -.It Xo -.Ft void -.Fn pager_close void -.Xc -.Pp -Closes the pager. -.It Xo -.Ft int -.Fn pager_output "const char *lines" -.Xc -.Pp -Sends the lines in the -.Dv NUL Ns --terminated buffer at -.Fa lines -to the pager. -Newline characters are counted in order to determine the number -of lines being output (wrapped lines are not accounted for). -The -.Fn pager_output -function will return zero when all of the lines have been output, or nonzero -if the display was paused and the user elected to quit. -.It Xo -.Ft int -.Fn pager_file "const char *fname" -.Xc -.Pp -Attempts to open and display the file -.Fa fname . -Returns -1 on error, 0 at EOF, or 1 if the user elects to quit while reading. -.El -.Sh MISC -.Bl -hang -width 10n -.It Xo -.Ft void -.Fn twiddle void -.Xc -.Pp -Successive calls emit the characters in the sequence |,/,-,\\ followed by a -backspace in order to provide reassurance to the user. -.El -.Sh REQUIRED LOW-LEVEL SUPPORT -The following resources are consumed by -.Nm -- stack, heap, console and devices. -.Pp -The stack must be established before -.Nm -functions can be invoked. -Stack requirements vary depending on the functions -and file systems used by the consumer and the support layer functions detailed -below. -.Pp -The heap must be established before calling -.Fn alloc -or -.Fn open -by calling -.Fn setheap . -Heap usage will vary depending on the number of simultaneously open files, -as well as client behaviour. -Automatic decompression will allocate more -than 64K of data per open file. -.Pp -Console access is performed via the -.Fn getchar , -.Fn putchar -and -.Fn ischar -functions detailed below. -.Pp -Device access is initiated via -.Fn devopen -and is performed through the -.Fn dv_strategy , -.Fn dv_ioctl -and -.Fn dv_close -functions in the device switch structure that -.Fn devopen -returns. -.Pp -The consumer must provide the following support functions: -.Bl -hang -width 10n -.It Xo -.Ft int -.Fn getchar void -.Xc -.Pp -Return a character from the console, used by -.Fn gets , -.Fn ngets -and pager functions. -.It Xo -.Ft int -.Fn ischar void -.Xc -.Pp -Returns nonzero if a character is waiting from the console. -.It Xo -.Ft void -.Fn putchar int -.Xc -.Pp -Write a character to the console, used by -.Fn gets , -.Fn ngets , -.Fn *printf , -.Fn panic -and -.Fn twiddle -and thus by many other functions for debugging and informational output. -.It Xo -.Ft int -.Fn devopen "struct open_file *of" "const char *name" "const char **file" -.Xc -.Pp -Open the appropriate device for the file named in -.Fa name , -returning in -.Fa file -a pointer to the remaining body of -.Fa name -which does not refer to the device. -The -.Va f_dev -field in -.Fa of -will be set to point to the -.Vt devsw -structure for the opened device if successful. -Device identifiers must -always precede the path component, but may otherwise be arbitrarily formatted. -Used by -.Fn open -and thus for all device-related I/O. -.It Xo -.Ft int -.Fn devclose "struct open_file *of" -.Xc -.Pp -Close the device allocated for -.Fa of . -The device driver itself will already have been called for the close; this call -should clean up any allocation made by devopen only. -.It Xo -.Ft void -.Fn panic "const char *msg" "..." -.Xc -.Pp -Signal a fatal and unrecoverable error condition. -The -.Fa msg ... -arguments are as for -.Fn printf . -.El -.Sh INTERNAL FILE SYSTEMS -Internal file systems are enabled by the consumer exporting the array -.Vt struct fs_ops *file_system[] , -which should be initialised with pointers -to -.Vt struct fs_ops -structures. -The following file system handlers are supplied by -.Nm , -the consumer may supply other file systems of their own: -.Bl -hang -width ".Va cd9660_fsops" -.It Va ufs_fsops -The -.Bx -UFS. -.It Va ext2fs_fsops -Linux ext2fs file system. -.It Va tftp_fsops -File access via TFTP. -.It Va nfs_fsops -File access via NFS. -.It Va cd9660_fsops -ISO 9660 (CD-ROM) file system. -.It Va gzipfs_fsops -Stacked file system supporting gzipped files. -When trying the gzipfs file system, -.Nm -appends -.Li .gz -to the end of the filename, and then tries to locate the file using the other -file systems. -Placement of this file system in the -.Va file_system[] -array determines whether gzipped files will be opened in preference to non-gzipped -files. -It is only possible to seek a gzipped file forwards, and -.Fn stat -and -.Fn fstat -on gzipped files will report an invalid length. -.It Va bzipfs_fsops -The same as -.Va gzipfs_fsops , -but for -.Xr bzip2 1 Ns -compressed -files. -.El -.Pp -The array of -.Vt struct fs_ops -pointers should be terminated with a NULL. -.Sh DEVICES -Devices are exported by the supporting code via the array -.Vt struct devsw *devsw[] -which is a NULL terminated array of pointers to device switch structures. -.Sh HISTORY -The -.Nm -library contains contributions from many sources, including: -.Bl -bullet -compact -.It -.Nm libsa -from -.Nx -.It -.Nm libc -and -.Nm libkern -from -.Fx 3.0 . -.It -.Nm zalloc -from -.An Matthew Dillon Aq Mt dillon@backplane.com -.El -.Pp -The reorganisation and port to -.Fx 3.0 , -the environment functions and this manpage were written by -.An Mike Smith Aq Mt msmith@FreeBSD.org . -.Sh BUGS -The lack of detailed memory usage data is unhelpful. |