Skip Navigation Links | |
Exit Print View | |
Resource Management, Oracle Solaris Zones, and Oracle Solaris 10 Zones Developer's Guide Oracle Solaris 11.1 Information Library |
1. Resource Management in the Oracle Solaris Operating System
Overview of Projects and Tasks
Project and Task API Functions
Code Examples for Accessing project Database Entries
3. Using the C Interface to Extended Accounting
4. Using the Perl Interface to Extended Accounting
7. Design Considerations for Resource Management Applications in Oracle Solaris Zones
Consider the following issues when writing your application:
No function exists to explicitly create a new project.
A user cannot log in if no default project for the user exists in the project database.
A new task in the user's default project is created when the user logs in.
When a process joins a project, the project's resource control and pool settings are applied to the process.
setproject() requires privilege. The newtask command does not require privilege if you own the process. Either can be used to create a task, but only newtask can change the project of a running process.
No parent/child relationship exists between tasks.
Finalized tasks can be created by using newtask -F or by using setproject() to associate the caller with a new project. Finalized tasks are useful when trying to accurately estimate aggregate resource accounting.
The reentrant functions, getprojent(), getprojbyname(), getprojbyid(), getdefaultproj(), and inproj(), use buffers supplied by the caller to store returned results. These functions are safe for use in both single-threaded applications and multithreaded applications.
Reentrant functions require these additional arguments: proj, buffer, and bufsize. The proj argument must be a pointer to a project structure allocated by the caller. On successful completion, these functions return the project entry in this structure. Storage referenced by the project structure is allocated from the memory specified by the buffer argument. bufsize specifies the size in number of bytes.
If an incorrect buffer size is used, getprojent() returns NULL and sets errno to ERANGE.