xref: /illumos-gate/usr/src/contrib/ast/src/lib/libast/vmalloc/vmset.c (revision b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f)
1 /***********************************************************************
2 *                                                                      *
3 *               This software is part of the ast package               *
4 *          Copyright (c) 1985-2011 AT&T Intellectual Property          *
5 *                      and is licensed under the                       *
6 *                 Eclipse Public License, Version 1.0                  *
7 *                    by AT&T Intellectual Property                     *
8 *                                                                      *
9 *                A copy of the License is available at                 *
10 *          http://www.eclipse.org/org/documents/epl-v10.html           *
11 *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12 *                                                                      *
13 *              Information and Software Systems Research               *
14 *                            AT&T Research                             *
15 *                           Florham Park NJ                            *
16 *                                                                      *
17 *                 Glenn Fowler <gsf@research.att.com>                  *
18 *                  David Korn <dgk@research.att.com>                   *
19 *                   Phong Vo <kpv@research.att.com>                    *
20 *                                                                      *
21 ***********************************************************************/
22 #if defined(_UWIN) && defined(_BLD_ast)
23 
_STUB_vmset()24 void _STUB_vmset(){}
25 
26 #else
27 
28 #include	"vmhdr.h"
29 
30 
31 /*	Set the control flags for a region.
32 **
33 **	Written by Kiem-Phong Vo, kpv@research.att.com, 01/16/94.
34 */
35 #if __STD_C
vmset(reg Vmalloc_t * vm,int flags,int on)36 int vmset(reg Vmalloc_t* vm, int flags, int on)
37 #else
38 int vmset(vm, flags, on)
39 reg Vmalloc_t*	vm;	/* region being worked on		*/
40 int		flags;	/* flags must be in VM_FLAGS		*/
41 int		on;	/* !=0 if turning on, else turning off	*/
42 #endif
43 {
44 	int		mode;
45 	Vmdata_t	*vd = vm->data;
46 
47 	if(flags == 0 && on == 0)
48 		return vd->mode;
49 
50 	SETLOCK(vm, 0);
51 
52 	mode = vd->mode;
53 	if(on)
54 		vd->mode |=  (flags&VM_FLAGS);
55 	else	vd->mode &= ~(flags&VM_FLAGS);
56 
57 	CLRLOCK(vm, 0);
58 
59 	return mode;
60 }
61 
62 #endif
63