*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->IRIX man pages -> standard/sysmp (2)              
Title
Content
Arch
Section
 

Contents


sysmp(2)							      sysmp(2)


NAME    [Toc]    [Back]

     sysmp - multiprocessing control

C SYNOPSIS    [Toc]    [Back]

     #include <sys/types.h>
     #include <sys/sysmp.h>
     #include <sys/sysinfo.h> /* for SAGET and MINFO structures	*/
     int sysmp (int cmd, ...);
     ptrdiff_t sysmp (int cmd, ...);"

DESCRIPTION    [Toc]    [Back]

     sysmp provides control/information	for miscellaneous system services.
     This system call is usually used by system	programs and is	not intended
     for general use.  The arguments arg1, arg2, arg3, arg4 are	provided for
     command-dependent use.

     As	specified by cmd, the following	commands are available:

     MP_CLEARCFSSTAT    [Toc]    [Back]
     MP_CLEARNFSSTAT
     MP_NUMA_GETCPUNODEMAP
     MP_NUMA_GETDISTMATRIX
		    These are all interfaces that are used to implement
		    various system library functions.  They are	all subject to
		    change and should not be called directly by	applications.

     MP_PGSIZE	    The	page size of the system	is returned (see
		    getpagesize(2)).

     MP_SCHED	    Interface for the schedctl(2) system call.

     MP_NPROCS	    Returns the	number of processors physically	configured.

     MP_NAPROCS	    Returns the	number of processors that are available	to
		    schedule unrestricted processes.

     MP_STAT	    The	processor ids and status flag bits of the physically
		    configured processors are copied into an array of pda_stat
		    structures to which	arg1 points.  The array	must be	large
		    enough to hold as many pda_stat structures as the number
		    of processors returned by the MP_NPROCS sysmp command.
		    The	pda_stat structure and the various status bits are
		    defined in <sys/pda.h>.

     MP_EMPOWER	    The	processor number given by arg1,	interpreted as an
		    'int', is empowered	to run any unrestricted	processes.
		    This is the	default	for all	processors.  This command
		    requires superuser authority.

     MP_RESTRICT    The	processor number given by arg1,	interpreted as an
		    'int', is restricted from running any processes except
		    those assigned to it by a MP_MUSTRUN or MP_MUSTRUN_PID



									Page 1






sysmp(2)							      sysmp(2)



		    command, a runon(1)	command	or because of hardware
		    necessity.	Note that processor 0 cannot be	restricted.
		    This command requires superuser authority.	On Challenge
		    Series machines, all timers	belonging to the processor are
		    moved to the processor that	owns the clock as reported by
		    MP_CLOCK.

     MP_ISOLATE	    The	processor number given by arg1,	interpreted as an
		    'int', is isolated from running any	processes except those
		    assigned to	it by a	MP_MUSTRUN command, a runon(1) command
		    or because of hardware necessity.  Instruction cache and
		    Translation	Lookaside Buffer synchronization across
		    processors in the system is	minimized or delayed on	an
		    isolated processor until system services are requested.
		    Note that processor	0 cannot be isolated.  This command
		    requires superuser authority.  On Challenge	Series
		    machines, all timers belonging to the processor are	moved
		    to the processor that owns the clock as reported by
		    MP_CLOCK.

     MP_UNISOLATE   The	processor number given by arg1,	interpreted as an
		    'int', is unisolated and empowered to run any unrestricted
		    processes.	This is	the default system configuration for
		    all	processors.  This command requires superuser
		    authority.

     MP_PREEMPTIVE  The	processor number given by arg1,	interpreted as an
		    'int', has its clock scheduler enabled.  This is the
		    default for	all processors.	 This command requires
		    superuser authority.

     MP_NONPREEMPTIVE    [Toc]    [Back]
		    The	processor number given by arg1,	interpreted as an
		    'int', has its clock scheduler disabled.  Normal process
		    time slicing is no longer enforced on that processor.  As
		    a result of	turning	off the	clock interrupt, the interrupt
		    latency on this processor will be lower.  This command
		    requires superuser authority and is	allowed	only on	an
		    isolated processor.	 This command is not allowed on	the
		    clock processor (see MP_CLOCK).

     MP_CLOCK	    The	processor number given by arg1,	interpreted as an
		    'int', is given charge of the operating system software
		    clock (see timers(5)).  This command requires superuser
		    authority.

     MP_FASTCLOCK   The	processor number given by arg1,	interpreted as an
		    'int', is given charge of the operating system software
		    fast clock (see timers(5)).	 This command requires
		    superuser authority.





									Page 2






sysmp(2)							      sysmp(2)



     MP_MISER_GETREQUEST    [Toc]    [Back]
     MP_MISER_SENDREQUEST
     MP_MISER_RESPOND
     MP_MISER_GETRESOURCE
     MP_MISER_SETRESOURCE
     MP_MISER_CHECKACCESS
		    These are all interfaces that are used to implement
		    various miser(1) functions.	 These are all subject to
		    change and should not be called directly by	applications.

     MP_MUSTRUN	    Assigns the	calling	process	to run only on the processor
		    number by arg1, interpreted	as an 'int', except as
		    required for communications	with hardware devices.	A
		    process that has allocated a CC sync register (see
		    ccsync(7m))	is restricted to running on a particular cpu.
		    Attempts to	reassign such a	process	to another cpu will
		    fail until the CC sync register has	been relinquished.
		    After a sucessful assignment to a cpu, any subsequent fork
		    or sproc call that creates a new process is	also assigned
		    to the same	cpu as the parent (see fork(2) and sproc(2)).
		    This command should	not be used within a pthreaded
		    application	(see pthread_setrunon_np(3P)).

     MP_MUSTRUN_PID Assigns the	process	specified by arg2 to run only on the
		    processor number specified by arg1,	both interpreted as
		    'int', except as required for communications with hardware
		    devices.  A	process	that has allocated a CC	sync register
		    (see ccsync(7m)) is	restricted to running on a particular
		    cpu.  Attempts to reassign such a process to another cpu
		    will fail until the	CC sync	register has been
		    relinquished.  After a sucessful assignment	to a cpu, any
		    subsequent fork or sproc call performed by the specified
		    process that creates a new process is also assigned	to the
		    same cpu as	the parent (see	fork(2)	and sproc(2)).	This
		    command will give unpredictable results if the specified
		    process is a pthreaded process.

     MP_GETMUSTRUN  Returns the	processor the current process has been set to
		    run	on using the MP_MUSTRUN	command.  If the current
		    process has	not been assigned to a specific	processor, -1
		    is returned	and errno is set to EINVAL.  This command
		    should not be used within a	pthreaded application (see
		    pthread_setrunon_np(3P)).

     MP_GETMUSTRUN_PID    [Toc]    [Back]
		    Returns the	processor that the process specified by	arg1
		    has	been set to run	on using the MP_MUSTRUN	or
		    MP_MUSTRUN_PID command.  If	the process has	not been
		    assigned to	a specific processor, -1 is returned and errno
		    is set to EINVAL.  This command will give unpredictable
		    results if the specified process is	a pthreaded process.




									Page 3






sysmp(2)							      sysmp(2)



     MP_RUNANYWHERE Frees the calling process to run on	whatever processor the
		    system deems suitable.

     MP_RUNANYWHERE_PID    [Toc]    [Back]
		    Frees the process specified	by arg1	to run on whatever
		    processor the system deems suitable.

     MP_KERNADDR    Returns the	address	of various kernel data structures.
		    The	structure returned is selected by arg1.	 The list of
		    available structures is detailed in	<sys/sysmp.h>.	This
		    option is used by many system programs to avoid having to
		    look in /unix for the location of the data structures.

     MP_SASZ	    Returns the	size of	various	system accounting structures.
		    As above, the structure returned is	governed by arg1.

     MP_SAGET1	    Returns the	contents of various system accounting
		    structures.	 The information is only for the processor
		    specified by arg4.	As above, the structure	returned is
		    governed by	arg1.  arg2 points to a	buffer in the address
		    space of the calling process and arg3 specifies the
		    maximum number of bytes to transfer.

     MP_SAGET	    Returns the	contents of various system accounting
		    structures.	 The information is summed across all
		    processors before it is returned.  As above, the structure
		    returned is	governed by arg1.  arg2	points to a buffer in
		    the	address	space of the calling process and arg3
		    specifies the maximum number of bytes to transfer.

     Possible errors from sysmp	are:

     [EPERM]	 The effective user ID is not superuser.  Many of the commands
		 require superuser privilege.

     [EPERM]	 The user ID of	the sending process is not superuser, and its
		 real or effective user	ID does	not match the real, saved,  or
		 effective user	ID of the receiving process.

     [ESRCH]	 No process corresponding to that specified by a
		 MP_MUSTRUN_PID, MP_GETMUSTRUN_PID, or MP_RUNANYWHERE_PID
		 could be found.

     [EINVAL]	 The processor named by	a MP_EMPOWER, MP_RESTRICT, MP_CLOCK or
		 MP_SAGET1 command does	not exist.

     [EINVAL]	 The cmd argument is invalid.

     [EINVAL]	 The arg1 argument to a	MP_KERNADDR command is invalid.






									Page 4






sysmp(2)							      sysmp(2)



     [EINVAL]	 An attempt was	made via MP_MUSTRUN or MP_MUSTRUN_PID to move
		 a process owning a CC sync register from the cpu controlling
		 the CC	sync register.

     [EINVAL]	 The target of the MP_GETMUSTRUN command has not been set to
		 run on	a specific processor.

     [EINVAL]	 The target process of the MP_MUSTRUN_PID command is a
		 pthreaded process.

     [EBUSY]	 An attempt was	made to	restrict the only unrestricted
		 processor or to restrict the master processor.

     [EFAULT]	 An invalid buffer address has been supplied by	the calling
		 process.

SEE ALSO    [Toc]    [Back]

      
      
     mpadmin(1), runon(1), getpagesize(2), schedctl(2),
     pthread_setrunon_np(3P), timers(5)

DIAGNOSTICS    [Toc]    [Back]

     Upon successful completion, the cmd dependent data	is returned.
     Otherwise,	a value	of -1 is returned and errno is set to indicate the
     error.


									PPPPaaaaggggeeee 5555
[ Back ]
 Similar pages
Name OS Title
mpconf IRIX multiprocessing control and information
mp IRIX C multiprocessing utility functions
mp IRIX C multiprocessing utility functions
mpc IRIX Multiprocessing C Source Transformer
vlgetcontrol IRIX get or set control VL value
vc IRIX version control
ioctl NetBSD control device
setlogmask_r Tru64 Control system log
ioctl HP-UX control device
vsyslog OpenBSD control system log
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service