Appendix A. Silicon Graphics Driver/Kernel API

This appendix summarizes the Silicon Graphics Driver/Kernel Authorized Programming Interface in tabular form. The data structures, entry points, and kernel functions are listed alphabetically with with clickable links to discussions in this book and to their reference pages. The tables also show which functions and structures are compatible with SVR4 and which are unique to IRIX.

The tables in this appendix are based on the reference pages in volume D. The reference pages in volume D constitute the formal, engineering definition of the Driver/Kernel API. When discussion in this book disagrees with the contents of a reference page, the reference page takes precedence (however, any such disagreement should be reported by using the Feedback menu of the InSight viewer).

Each table in this appendix has a column headed “Versions.” The codes in this column have the following meanings:

SV

Syntactically and semantically portable from SVR4 UNIX, as documented in the UNIX SVR4.2 Device Driver Reference.

SV*

Syntactically portable from UNIX SVR4, but semantics may differ. Read the discussion and reference page carefully when porting.

5.3

Portable from IRIX version 5.3.

5.3*

Portable from IRIX 5.3, but interface has changed in some detail or new ability has been added.

6.2

Introduced in IRIX version 6.2.


Driver Exported Names

The kernel loader, lboot, recognizes certain exported names of static data and functional entry points. These exported names are summarized in Table A-1.

Table A-1. Driver Exported Names

Name

Summary

Discussed

Versions

attach

Notify driver of device attachment.

 

6.2

close(D2)

Notify driver of final close of minor device.

page 151

SV, 5.3

detach

Notify driver of removed device.

 

6.2

devflag(D1)

Show driver attributes to lboot.

page 142

SV*, 5.3*

edtinit(D2)

Initialize driver from VECTOR information.

page 146

5.3

halt(D2)

Notify driver of system shutdown.

page 168

SV, 5.3

info(D1)

Show driver entries to STREAMS interface.

page 408

SV, 5.3

init(D2)

Initialize driver early in system startup.

page 146

SV*, 5.3

intr(D2)

Notify driver of device interrupt.

page 164

SV, 5.3

ioctl(D2)

Call driver to implement ioctl() call.

page 151

SV*, 5.3

map(D2)

Call driver to implement IRIX mmap().

page 160

5.3

mmap(D2)

Call driver to implement mmap().

page 162

SV*, 5.3

open(D2)

Call driver to open a device.

page 148

SV, 5.3

print(D2)

Call block driver to display filesystem error.

page 169

SV, 5.3

put(D2)

Call STREAMS driver to receive message.

page 410

SV, 5.3

read(D2)

Call character driver to read data.

page 153

SV, 5.3

size(D2)

Call block driver to get device capacity.

page 169

SV, 5.3

srv(D2)

Call driver to service queued messages.

page 411

SV, 5.3

start(D2)

Initialize driver late in system startup.

page 147

SV, 5.3

strategy(D2)

Call block driver to read or write data.

page 155

SV*, 5.3

unload(D2)

Call loadable driver prior to unloading it.

page 167

5.3

unmap(D2)

Call driver to notify it of unmap() call.

page 163

5.3

write(D2)

Call character driver to write data.

page 153

SV, 5.3

The following reference pages have overview information on exported names: intro(D1), intro(D2), and prefix(D1).


Note: The following SVR4 exported names are not used in IRIX drivers: chpoll, _load, and _unload. The latter is replaced by pfxload() without the leading underscore.


Kernel Data Structures and Declarations

The driver/kernel interface is based on shared use of certain data types and defined constant values. For general information on these interface objects, see the intro(D4) and intro(D5) reference pages.

The interface objects used by device drivers are summarized in Table A-2. .

Table A-2. Device Driver Interface Objects

Name

Summary

Discussed

Versions

buf(D4)

Block read/write request structure.

page 185

SV*, 5.3*

eisa_dma_cb(D4)

DMA command block for EISA slave DMA.

 

5.3

eisa_dma_buf(D4)

DMA command buffer for EISA slave DMA.

 

5.3

errnos(D5)

Error numbers valid for driver use.

 

SV*, 5.3

iovec(D4)

Describes an I/O buffer segment to the read or write entry points.

page 184

SV, 5.3

signals(D5)

Lists signal numbers valid for driver use.

 

SV*, 5.3

uio(D4)

Describes an I/O request to the read or write entry points.

page 184

SV*, 5.3



Note: The following data structures used in SVR4 drivers are not used in IRIX: dma_buf and dma_cb. The eisa_dma_buf and eisa_dma_cb structures are similar but are used only in EISA drivers.

The interface objects used by STREAMS drivers are summarized in Table A-3

Table A-3. STREAMS Driver Interface Objects

Name

Summary

Discussed

Versions

copyreq(D4)

Copy request structure.

 

SV, 5.3

copyresp(D4)

Copy response structure.

 

SV, 5.3

datab(D4)

Message data block.

 

SV, 5.3

free_rtn(D4)

Describes a message-free routine.

 

SV, 5.3

iocblk(D4)

Describes ioctl() data or response.

 

SV, 5.3

linkblk(D4)

Describes multiplexed link.

 

SV, 5.3

module_info(D4)

Describes module attributes.

 

SV, 5.3

msgb(D4)

Describes all or part of a message.

 

SV, 5.3

qinit(D4)

Points to handlers and parameters for a queue.

 

SV, 5.3

queue(D4)

Describes a queue of messages.

 

SV, 5.3

streamtab(D4)

Points to the queues handled by a driver.

 

SV, 5.3

stroptions(D4)

Lists stream-head options.

 

SV, 5.3


Kernel Functions

The IRIX kernel makes available the Table A-4 functions summarized in .

Table A-4. Kernel Functions

Name

Summary

Discussed

Versions

adjmsg(D3)

Trim bytes from a message.

 

SV, 5.3

allocb(D3)

Allocate a message block.

 

SV, 5.3

ASSERT(D3)

Debugging macro designed for use in the kernel (compare to assert(3X)).

page 254

5.3

badaddr(D3)

Test physical address for input.

page 197

5.3

badaddr_val(D3)

Test physical address for input and return the input value received.

page 197

6.2

bcanput(D3)

Test for flow control in a specified priority band.

 

SV, 5.3

bcanputnext(D3)

Test for flow control in a specified priority band.

 

SV, 5.3

bcmp(D3)

Compare data between kernel locations.

page 195

SV, 5.3

bcopy(D3)

Copy data between locations in the kernel.

page 195

SV, 5.3

biodone(D3)

Mark a buf_t as complete and wake any process waiting for it.

page 218

SV, 5.3

bioerror(D3)

Manipulate error fields within a buf_t.

page 218

SV, 5.3

biowait(D3)

Suspend process pending completion of block I/O.

page 218

SV, 5.3

bp_mapin(D3)

Map buffer pages into kernel virtual address space.

page 201

SV, 5.3

bp_mapout(D3)

Release mapping of buffer pages.

page 201

SV, 5.3

bptophys(D3)

Get physical address of buffer data.

page 200

5.3

brelse(D3)

Return a buffer to the system's free list.

page 192

SV, 5.3

btod(D3)

Return number of 512-byte “sectors” in a byte count (round up).

page 199

5.3

btop(D3)

Return number of I/O pages in a byte count (truncate).

page 199

SV, 5.3

btopr(D3)

Return number of I/O pages in a byte count (round up).

page 199

SV, 5.3

bufcall(D3)

Call a function when a buffer becomes available.

 

SV, 5.3

bzero(D3)

Clear kernel memory for a specified size.

page 194

SV, 5.3

canput(D3)

Test for room in a message queue.

 

SV, 5.3

canputnext(D3)

Test for room in a message queue.

 

SV, 5.3

clrbuf(D3)

Erase the contents of a buffer desribed by a buf_t.

page 201

SV, 5.3

cmn_err(D3)

Display an error message or panic the system.

page 251

SV*, 5.3

copyb(D3)

Copy a message block.

 

SV, 5.3

copyin(D3)

Copy data from user address space.

page 194

SV, 5.3

copymsg(D3)

Copy a message.

 

SV, 5.3

copyout(D3)

Copy data to user address space.

page 194

SV, 5.3

cpsema(D3)

Conditionally decrement a semaphore's state.

page 224

5.3

cvsema(D3)

Conditionally increment a semaphore's state

page 224

5.3

datamsg(D3)

Test whether a message is a data message.

 

SV, 5.3

delay(D3)

Delay for a specified number of clock ticks.

page 216

SV, 5.3

disable_sysad_parity()

Disable memory parity checking on SysAD bus.

 

 

dki_dcache_inval(D3)

Invalidate the data cache for a given range of virtual addresses.

page 203

5.3

dki_dcache_wb(D3)

Write back the data cache for a given range of virtual addresses.

page 203

5.3

dki_dcache_wbinval(D3)

Write back and invalidate the data cache for a given range of virtual addresses.

page 203

5.3

dma_map(D3)

Load DMA mapping registers for an imminent VME transfer.

 

5.3

dma_mapbp(D3)

Load DMA mapping registers for an imminent VME transfer.

 

5.3

dma_mapaddr(D3)

Return the “bus virtual” address for a given VME map and address.

 

5.3

dma_mapalloc(D3)

Allocate a VME DMA map.

 

5.3

dma_mapfree(D3)

Free a VME DMA map.

 

5.3

drv_getparm(D3)

Retrieve kernel state information.

page 205

SV*, 5.3

drv_hztousec(D3)

Convert clock ticks to microseconds

page 216

SV, 5.3

drv_priv(D3)

Test for privileged user.

page 205

SV, 5.3

drv_setparm(D3)

Set kernel state information.

page 205

SV, 5.3

drv_usectohz(D3)

Convert microseconds to clock ticks.

page 216

SV, 5.3

drv_usecwait(D3)

Busy-wait for a specified interval.

page 216

SV, 5.3

dtimeout(D3)

Schedule a function execute on a specified processor after a specified length of time.

page 216

5.3

dupb(D3)

Duplicate a message block.

 

SV, 5.3

dupmsg(D3)

Duplicate a message.

 

SV, 5.3

eisa_dma_disable(D3)

Disable recognition of hardware requests on an EISA DMA channel.

 

5.3

eisa_dma_enable(D3)

Enable recognition of hardware requests on a EISA DMA channel.

 

5.3

eisa_dma_free_buf(D3)

Free a previously allocated EISA DMA buffer descriptor.

 

5.3

eisa_dma_free_cb(D3)

Free a previously allocated EISA DMA command block.

 

5.3

eisa_dma_get_buf(D3)

Allocate an EISA DMA buffer descriptor.

 

5.3

eisa_dma_get_cb(D3)

Allocate an EISA DMA command block.

 

5.3

eisa_dma_prog(D3)

Program an EISA DMA operation for a subsequent software request.

 

5.3

eisa_dma_stop(D3)

Stop software-initiated EISA DMA operation and release channel.

 

5.3

eisa_dma_swstart(D3)

Initiate an EISA DMA operation via software request.

 

5.3

eisa_dmachan_alloc()

Allocate a DMA channel for EISA slave DMA.

 

5.3

eisa_ivec_alloc()

Allocate an IRQ level for EISA.

 

5.3

eisa_ivec_set()

Associate a handler with an EISA IRQ.

 

5.3

enableok(D3)

Allow a queue to be serviced.

 

SV, 5.3

enable_sysad_parity()

Reenable parity checking on SysAD bus.

 

 

esballoc(D3)

Allocate a message block using an externally-supplied buffer.

 

SV, 5.3

esbbcall(D3)

Call a function when an externally-supplied buffer can be allocated.

 

SV, 5.3

etoimajor(D3)

Convert external to internal major device number.

page 182

SV, 5.3

fast_itimeout(D3)

Same as itimeout() but takes an interval in “fast ticks.”

page 216

6.2

fasthzto(D3)

Returns the value of a struct timeval as a count of “fast ticks.”

page 216

6.2

flushband(D3)

Flush messages in a specified priority band.

 

SV, 5.3

flushbus(D3)

Make sure contents of the write buffer are flushed to the system bus

page 203

5.3

flushq(D3)

Flush messages on a queue.

 

SV, 5.3

freeb(D3)

Free a message block.

 

SV, 5.3

freemsg(D3)

Free a message.

 

SV, 5.3

freerbuf(D3)

Free a buf_t with no buffer.

page 192

SV, 5.3

freesema(D3)

Free the resources associated with a semaphore.

page 224

5.3*

freezestr(D3)

Freeze the state of a stream.

 

SV, 5.3

fubyte(D3)

Load a byte from user space.

page 194

5.3

fuword(D3)

Load a word from user space.

page 194

5.3

geteblk(D3)

Get a buf_t with no buffer.

page 192

SV, 5.3

getemajor(D3)

Get external major device number.

page 182

SV, 5.3

geteminor(D3)

Get external minor device number.

page 182

SV, 5.3

geterror(D3)

retrieve error number from a buffer header

page 218

SV, 5.3

getmajor(D3)

Get internal major device number.

page 182

SV, 5.3

getminor(D3)

Get internal minor device number.

page 182

SV, 5.3

getnextpg(D3)

Return pfdat structure for next page.

page 201

5.3

getq(D3)

Get the next message from a queue.

 

SV, 5.3

getrbuf(D3)

Allocate a buf_t with no buffer.

page 192

SV, 5.3

hwcpin(D3)

Copy data from device registers to kernel memory.

page 194

5.3

hwcpout(D3)

Copy data from kernel memory to device registers.

page 194

5.3

initnsema(D3)

Initialize a semaphore to a specified count.

page 224

5.3

initnsema_mutex(D3)

Initialize a semaphore to a count of 1.

page 224

5.3

insq(D3)

Insert a message into a queue.

 

SV, 5.3

ip26_enable_ucmem(D3)

Change memory mode on IP26 processor.

page 29

6.2

ip26_return_ucmem(D3)

Change memory mode on IP26 processor.

page 29

SV, 5.3

is_sysad_parity_enabled( )

Test for parity checking on SysAD bus.

 

5.3

itimeout(D3)

Schedule a function to be executed after a specified number of clock ticks.

page 216

SV, 5.3

itoemajor(D3)

Convert internal to external major device number.

page 182

SV, 5.3

kern_calloc(D3)

Allocate and clear space from kernel memory.

page 190

5.3

kern_free(D3)

Free kernel memory space.

page 190

5.3

kern_malloc(D3)

Allocate kernel virtual memory.

page 190

5.3

kmem_alloc(D3)

Allocate space from kernel free memory.

page 190

SV, 5.3

kmem_free(D3)

Free previously allocated kernel memory.

page 190

SV, 5.3

kmem_zalloc(D3)

Allocate and clear space from kernel free memory.

page 190

SV, 5.3

kvtophys(D3)

Get physical address of kernel data.

page 201

5.3

linkb(D3)

Concatenate two message blocks.

 

SV*, 5.3*

LOCK(D3)

Acquire a basic lock, waiting if necessary.

page 208

SV*, 5.3*

LOCK_ALLOC(D3)

Allocate and initialize a basic lock.

page 208

SV*, 5.3*

LOCK_DEALLOC(D3)

Deallocate an instance of a basic lock.

page 208

SV*, 5.3*

LOCK_INIT(D3)

Initialize a basic lock that was allocated statically, or reinitialize an allocated lock.

page 208

6.2

LOCK_DESTROY(D3)

Uninitialize a basic lock that was allocated statically.

page 208

6.2

makedevice(D3)

Make device number from major and minor numbers.

page 182

SV, 5.3

max(D3)

Return the larger of two integers.

 

SV, 5.3

min(D3)

Return the lesser of two integers.

 

SV, 5.3

msgdsize(D3)

Return number of bytes of data in a message.

 

SV, 5.3

msgpullup(D3)

Concatenate bytes in a message.

 

SV, 5.3

MUTEX_ALLOC(D3)

Allocate and initialize a mutex lock.

page 210

6.2

MUTEX_DEALLOC(D3)

Deinitialize and free a dynamically allocated mutex lock.

page 210

6.2

MUTEX_DESTROY(D3)

Deinitialize a mutex lock.

page 210

6.2

MUTEX_INIT(D3)

Initialize an existing mutex lock.

page 210

6.2

MUTEX_ISLOCKED(D3)

Test if a mutex lock is owned.

page 210

6.2

MUTEX_LOCK(D3)

Claim a mutex lock.

page 210

6.2

MUTEX_MINE(D3)

Test if a mutex lock is owned by this process.

page 210

6.2

MUTEX_TRYLOCK(D3)

Conditionally claim a mutex lock.

page 210

6.2

MUTEX_UNLOCK(D3)

Release a mutex lock.

page 210

6.2

MUTEX_WAITQ(D3)

Get the number of processes blocked by mutex lock.

page 210

6.2

ngeteblk(D3)

Allocate a buf_t and a buffer of specified size.

page 192

SV, 5.3

noenable(D3)

Prevent a queue from being scheduled.

 

SV, 5.3

OTHERQ(D3)

Get a pointer to queue's partner queue.

 

SV, 5.3

pcmsg(D3)

Test whether a message is a priority control message.

 

SV, 5.3

phalloc(D3)

Allocate and initialize a pollhead structure.

page 191

SV, 5.3

phfree(D3)

Free a pollhead structure.

page 191

SV, 5.3

physiock(D3)

Validate and issue a raw I/O request

page 218

SV, 5.3

pio_andb_rmw(D3)

VME Byte read-and-write.

 

5.3

pio_andh_rmw(D3)

VME 16-bit read-and-write.

 

5.3

pio_andw_rmw(D3)

VME 32-bit read-and-write.

 

5.3

pio_badaddr(D3)

Check forVME bus error when reading an address.

 

5.3

pio_badaddr_val(D3)

Check forVME bus error when reading an address and return the value read.

 

5.3

pio_bcopyin(D3)

Copy data from aVME bus address to kernel's virtual space.

 

5.3

pio_bcopyout(D3)

Copy data from kernel's virtual space to aVME bus address.

 

5.3

pio_mapaddr(D3)

Convert a VME bus address to a virtual address.

 

5.3

pio_mapalloc(D3)

Allocate aVME PIO map.

 

5.3

pio_mapfree(D3)

Free aVME PIO map.

 

5.3

pio_orb_rmw(D3)

VME Byte read-or-write.

 

5.3

pio_orh_rmw(D3)

VME 16-bit read-or-write.

 

5.3

pio_orw_rmw(D3)

VME 32-bit read-or-write.

 

5.3

pio_wbadaddr(D3)

Check for VME bus error when writing to an address.

 

5.3

pio_wbadaddr_val(D3)

Check forVME bus error when writing a specified value to an address.

 

5.3

pollwakeup(D3)

Inform polling processes that an event has occurred.

page 157

SV, 5.3

pptophys(D3)

Convert page pointer to physical address.

page 201

SV, 5.3

proc_ref(D3)

Obtain a reference to a process for signaling.

page 205

SV, 5.3

proc_signal(D3)

Send a signal to a process.

page 205

SV, 5.3

proc_unref(D3)

Release a reference to a process.

page 205

SV, 5.3

psema(D3)

Perform a “P” or wait semaphore operation.

page 224

SV, 5.3

ptob(D3)

Convert size in pages to size in bytes.

page 199

SV, 5.3

pullupmsg(D3)

Concatenate bytes in a message.

 

SV, 5.3

putbq(D3)

Place a message at the head of a queue.

 

SV, 5.3

putctl(D3)

Send a control message to a queue.

 

SV, 5.3

putctl1(D3)

Send a control message with a one-byte parameter to a queue.

 

SV, 5.3

putnext(D3)

Send a message to the next queue.

 

SV, 5.3

putnextctl(D3)

Send a control message to a queue.

 

SV, 5.3

putnextctl1(D3)

Send a control message with a one-byte parameter to a queue.

 

SV, 5.3

putq(D3)

Put a message on a queue.

 

SV, 5.3

qenable(D3)

Schedule a queue's service routine to be run.

 

SV, 5.3

qprocsoff(D3)

Enable put and service routines.

 

SV, 5.3

qprocson(D3)

Disable put and service routines

 

SV, 5.3

qreply(D3)

Send a message in the opposite direction in a stream.

 

SV, 5.3

qsize(D3)

Find the number of messages on a queue.

 

SV, 5.3

RD(D3)

Get a pointer to the read queue.

 

SV, 5.3

rmalloc(D3)

Allocate space from a private space management map.

page 193

SV, 5.3

rmallocmap(D3)

Allocate and initialize a private space management map.

page 193

SV, 5.3

rmalloc_wait(D3)

Allocate resources from a space management map.

page 193

SV, 5.3

rmfree(D3)

Release resources into a space management map.

page 193

SV, 5.3

rmfreemap(D3)

Free a private space management map.

page 193

SV, 5.3

rmvb(D3)

Remove a message block from a message.

 

SV, 5.3

rmvq(D3)

Remove a message from a queue.

 

SV, 5.3

RW_ALLOC(D3)

Allocate and initialize a reader/writer lock.

page 213

SV*, 5.3*

RW_DEALLOC(D3)

Deallocate a reader/writer lock.

page 213

SV*, 5.3*

RW_DESTROY(D3)

Deinitialize an existing reader/writer lock.

page 213

6.2

RW_INIT(D3)

Initialize an existing reader/writer lock.

page 213

6.2

RW_RDLOCK(D3)

Acquire a reader/writer lock as reader, waiting if necessary.

page 213

SV*, 5.3*

RW_TRYRDLOCK(D3)

Try to acquire a reader/writer lock as reader, returning a code if it is not free.

page 213

SV*, 5.3*

RW_TRYWRLOCK(D3)

Try to acquire a reader/writer lock as writer, returning a code if it is not free.

page 213

SV*, 5.3*

RW_UNLOCK(D3)

Release a reader/writer lock as reader or writer.

page 213

SV*, 5.3*

RW_WRLOCK(D3)

Acquire a reader/writer lock as writer, waiting if necessary.

page 213

SV*, 5.3*

SAMESTR(D3)

Test if next queue is of the same type.

 

SV, 5.3

scsi_abort()

Transmits a SCSI ABORT command.

page 305

5.3*

scsi_alloc(D3)

Open a connection between a driver and a target device.

page 305

5.3*

scsi_command(D3)

Transmit a SCSI command on the bus and return results.

page 305

5.3*

scsi_free(D3)

Release connection to target device.

page 305

5.3*

scsi_info(D3)

Issue the SCSI Inquiry command and return the results.

page 305

5.3*

scsi_reset()

Resets the SCSI adapter or bus.

page 305

5.3*

setgiovector()

Register a GIO interrupt handler.

 

5.3

setgioconfig()

Prepare a GIO slot for use.

 

5.3

sgset(D3)

Assign physical addresses to a vector of software scatter-gather registers.

page 201

5.3

sleep(D3)

Suspend process execution pending occurrence of an event.

page 221

SV, 5.3

SLEEP_ALLOC(D3)

Allocate and initialize a sleep lock.

page 212

SV*, 5.3*

SLEEP_DEALLOC(D3)

Deinitialize and deallocate a dynamically allocated sleep lock.

page 212

SV*, 5.3*

SLEEP_DESTROY

Deinitialize a sleep lock.

page 212

6.2

SLEEP_INIT(D3)

Initialize an existing sleep lock.

page 212

6.2

SLEEP_LOCK(D3)

Acquire a sleep lock, waiting if necessary until the lock is free.

page 212

SV*, 5.3*

SLEEP_LOCKAVAIL(D3)

Query whether a sleep lock is available.

page 212

SV*, 5.3*

SLEEP_LOCK_SIG(D3)

Acquire a sleep lock, waiting if necessary until the lock is free or a signal is received.

page 212

SV*, 5.3*

SLEEP_TRYLOCK(D3)

Try to acquire a sleep lock, returning a code if it is not free.

page 212

SV*, 5.3*

SLEEP_UNLOCK(D3)

Release a sleep lock.

page 212

SV*, 5.3*

splbase(D3)

Block no interrupts.

page 215

SV, 5.3

spltimeout(D3)

Block only timeout interrupts.

page 215

SV, 5.3

spldisk(D3)

Block disk interrupts.

page 215

SV, 5.3

splstr(D3)

Block STREAMS interrupts.

page 215

SV, 5.3

spltty(D3)

Block disk, VME, serial interrupts.

page 215

SV, 5.3

splhi(D3)

Block all I/O interrupts.

page 215

SV, 5.3

spl0(D3)

Same as splbase().

page 215

SV, 5.3

splx(D3)

Restore previous interrupt level.

page 215

SV, 5.3

strcat(D3)

Append one string to another.

 

SV, 5.3

strcpy(D3)

Copy a string.

 

SV, 5.3

streams_interrupt(D3)

Synchronize interrupt-level function with STREAMS mechanism.

 

5.3

STREAMS_TIMEOUT(D 3)

Synchronize timeout with STREAMS mechanism.

 

5.3

strlen(D3)

Return length of a string.

 

SV, 5.3

strlog(D3)

Submit messages to the log driver.

 

SV, 5.3

strncmp(D3)

Compare two strings for a specified length.

 

SV, 5.3

strncpy(D3)

Copy a string for a specified length.

 

SV, 5.3

strqget(D3)

Get information about a queue or band of the queue.

 

SV, 5.3

strqset(D3)

Change information about a queue or band of the queue.

 

SV, 5.3

subyte(D3)

Store a byte to user space.

page 194

5.3

suword(D3)

Store a word to user space.

page 194

5.3

SV_ALLOC(D3)

Allocate and initialize a synchronization variable.

page 222

SV*, 5.3*

SV_BROADCAST(D3)

Wake all processes sleeping on a synchronization variable.

page 222

SV*, 5.3*

SV_DEALLOC(D3)

Deinitialize and deallocate a synchronization variable.

page 222

SV*, 5.3*

SV_DESTROY

Deinitialize a synchronization variable.

page 222

6.2

SV_INIT

Initialize an existing synchronization variable.

page 222

6.2

SV_SIGNAL(D3)

Wake one process sleeping on a synchronization variable.

page 222

SV*, 5.3*

SV_WAIT(D3)

Sleep until a synchronization variable is signalled.

page 222

SV*, 5.3*

SV_WAIT_SIG(D3)

Sleep until a synchronization variable is signalled or a signal is received.

page 222

SV*, 5.3*

timeout(D3)

Schedule a function to be executed after a specified number of clock ticks.

page 216

SV, 5.3

TRYLOCK(D3)

Try to acquire a basic lock, returning a code if the lock is not currently free.

page 208

SV*, 5.3*

uiomove(D3)

Copy data using uio_t.

page 196

SV, 5.3

uiophysio(D3)

Validate a raw I/O request and pass to a strategy function.

page 218

5.3

unbufcall(D3)

Cancel a pending bufcall request.

 

SV, 5.3

undma(D3)

Unlock physical memory in user space.

page 218

5.3

unfreezestr(D3)

Unfreeze the state of a stream.

 

SV, 5.3

unlinkb(D3)

Remove a message block from the head of a message.

 

SV, 5.3

UNLOCK(D3)

Release a basic lock.

page 208

SV*, 5.3*

untimeout(D3)

Cancel a previous itimeout or fast_itimeout request.

page 216

SV*, 5.3*

ureadc(D3)

Copy a character to space described by uio_t.

page 196

SV, 5.3

userdma(D3)

Lock physical memory in user space.small number of

page 218

5.3

userabi()

Get data sizes for the ABI of the user process (32- or 64-bit).

page 169

6.2

uwritec(D3)

Return a character from space described by uio_t.

page 196

SV, 5.3

v_getaddr(D3)

Get the user virtual address associated with a vhandl_t.

page 198

5.3

v_gethandle(D3)

Get a unique identifier associated with a vhandl_t.

page 198

5.3

v_getlen(D3)

Get the length of user address space associated with a vhandl_t.

page 198

5.3

v_mapphys(D3)

Map kernel address space into user address space.

page 198

5.3

valusema(D3)

Return the value associated with a semaphore.

page 224

5.3

vme_adapter(D3)

Determine VME adapter that corresponds to a given memory address.

 

5.3

vme_ivec_alloc(D3)

Allocate a VME bus interrupt vector.

 

5.3

vme_ivec_free(D3)

Free a VME bus interrupt vector.

 

5.3

vme_ivec_set(D3)

Register a VME bus interrupt vector.

 

5.3

vsema(D3)

Perform a “V” or signal semaphore operation.

page 224

5.3

wakeup(D3)

Waken a process waiting for an event.

page 221

SV, 5.3

wbadaddr(D3)

Test physical address for output.

page 197

SV, 5.3

wbadaddr_val(D3)

Test physical address for output of specific value.

page 197

SV, 5.3

WR(D3)

Get a pointer to the write queue.

 

SV, 5.3

The following SVR4 kernel functions are not implemented in IRIX: bioreset, dma_disable, dma_enable, dma_free_buf, dma_free_cb, dma_get_best_mode, dma_get_buf, dma_get_cb, dma_pageio, dma_prog, dma_swstart, dma_swsetup, drv_gethardware, hat_getkpfnum, hat_getppfnum, inb, inl, inw, kvtoppid, mod_drvattach, mod_drvdetach, outb, outl, outw, physmap, physmap_free, phystoppid, psignal, rdma_filter, repinsb, repinsd, repinsw, repoutsb, repoutsd, repoutsw, rminit, rmsetwant, SLEEP_LOCKOWNED, strncat, vtop.