Today's Posts

Linux & Unix Commands - Search Man Pages

BSD 2.11 - man page for vmf (bsd section 3)

VMF(3)					       Library Functions Manual 				       VMF(3)

vminit, vmopen, vmclose, vmmapseg, vmmodify, vmlock, vmunlock, vmclrseg, vmflush, - disk based virtual memory routines
#include <vmf.h> struct vspace { int v_fd; /* file for swapping */ off_t v_foffset; /* offset for computing file addresses */ int v_maxsegno; /* number of segments in this space */ }; struct vseg { /* structure of a segment in memory */ struct dlink s_link; /* for linking into lru list */ int s_segno; /* segment number */ struct vspace *s_vspace; /* which virtual space */ int s_lock_count; int s_flags; union { int _winfo[WORDSPERSEG]; /* the actual segment */ char _cinfo[BYTESPERSEG]; } v_un; }; #define s_winfo v_un._winfo #define s_cinfo v_un._cinfo int vminit(nseg); int nseg; int vmopen(space, filename); struct vspace *space; char *filename; struct vseg *vmmapseg(space, segno); struct vspace *space; int segno; void vmlock(seg); struct vseg *seg; void vmunlock(seg); struct vseg *seg; void vmclrseg(seg); struct vseg *seg; void vmmodify(seg); void vmflush(); void vmclose(space); struct vspace *space;
This library provides a standard set of routines for managing large virtual memory spaces. It supports cre- ation of multiple concurrent virtual spaces, mapping of virtual pages into real memory, a lock/unlock mecha- nism, and a capability to clear specified virtual pages. vminit - This routine initializes the virtual memory system by setting up the pool of in-memory segment buf- fers. The argument to this function is the number of memory segments to allocate (typically 4 to 8 but can be higher as long as memory can be malloc'd). It must be called before any other "libvmf" routine is called. vmopen - For each virtual space that a program uses, the program must allocate an instance of the space struc- ture ('struct vspace'). This routine is used to initialize a virtual space structure using the specified address of a space structure and the name of the file that will serve as swap file for the space. If the sec- ond argument is NULL an invisible temporary file is used rather than a named (permanent) file. vmclose - This routine is used to close the UNIX file descriptor associated with the swap file for a virtual space. Any modified in-memory segments belonging to the specified address space are flushed to the paging file. vmmapseg - This routine is the primary interface to the virtual memory mechanism. It is executed with a spec- ified virtual space address and a segment number (between 0 and 511), and returns a pointer to an in-memory page containing the specified segment. vmmodify - Whenever a program modifies the data of a segment, it is the program's responsibility to inform the virtual memory system of the modification. This function is also available as a macro (VMMODIFY) for use in- line. vmlock - This routine increments the lock count of the specified segment buffer. A buffer with a nonzero lock count is locked and cannot be swapped out. vmunlock - This routine decrements the lock count of the specified buffer. It is a serious error to decrement the count below zero (lock underflow). vmclrseg - This routine clears the user data area (page) of the specified segment buffer. vmflush - This rou- tine simply swaps out all segments that are marked as modified.
Not as transparent (or as fast) as a larger hardware address space. There is no automatic segment crossing capability, the application must check if a virtual address crosses page/segment boundaries and perform a vmmapseg call.
There is a nroff document (using the -ms macros) in the libvmf source directory which goes into more details about the vm functions. 4.3 Berkeley Distribution September 24, 1993 VMF(3)

All times are GMT -4. The time now is 08:35 PM.

Unix & Linux Forums Content Copyright 1993-2018. All Rights Reserved.
Show Password