Package com.sun.jna.platform.unix

# Interface LibCAPI

All Superinterfaces:
  `Reboot`, `Resource`

All Known Subinterfaces:
  `LibC`, `LibC`, `SystemB`

public interface LibCAPI extends Reboot, Resource
Note: we are using this "intermediate" API in order to allow Linux-like O/S-es to implement the same API, but maybe using a different library name

Author:
  Lyor Goldstein

## Nested Class Summary

Nested Classes
Modifier and Type
Interface
Description
`static class`
`LibCAPI.size_t`
This is an unsigned integer type used to represent the sizes of objects.
`static class`
`LibCAPI.ssize_t`
This is a signed integer type used for a count of bytes or an error indication.

## Nested classes/interfaces inherited from interface com.sun.jna.platform.unix.Resource

`Resource.Rlimit`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`HOST_NAME_MAX`

### Fields inherited from interface com.sun.jna.platform.unix.Reboot

`RB_AUTOBOOT, RB_DISABLE_CAD, RB_ENABLE_CAD, RB_HALT_SYSTEM, RB_KEXEC, RB_POWER_OFF, RB_SW_SUSPEND`

### Fields inherited from interface com.sun.jna.platform.unix.Resource

`RLIMIT_AS, RLIMIT_CORE, RLIMIT_CPU, RLIMIT_DATA, RLIMIT_FSIZE, RLIMIT_LOCKS, RLIMIT_MEMLOCK, RLIMIT_MSGQUEUE, RLIMIT_NICE, RLIMIT_NLIMITS, RLIMIT_NOFILE, RLIMIT_NPROC, RLIMIT_RSS, RLIMIT_RTPRIO, RLIMIT_RTTIME, RLIMIT_SIGPENDING, RLIMIT_STACK`

## Method Summary

Modifier and Type
Method
Description
`int`
`close(int fd)`
Closes a file descriptor, so that it no longer refers to any file and may be reused.
`int`
`getdomainname(byte[] name, int len)`
`int`
`getegid()`
`String`
`getenv(String name)`
`int`
`geteuid()`
`int`
`getgid()`
`int`
`gethostname(byte[] name, int len)`
`int`
`getloadavg(double[] loadavg, int nelem)`
The getloadavg() function returns the number of processes in the system run queue averaged over various periods of time.
`int`
`getuid()`
`int`
`msync(Pointer addr, LibCAPI.size_t length, int flags)`
Flushes changes made to the in-core copy of a file that was mapped into memory using `LibCUtil.mmap(Pointer, long, int, int, int, long)` back to the filesystem.
`int`
`munmap(Pointer addr, LibCAPI.size_t length)`
Deletes the mappings for the specified address range, and causes further references to addresses within the range to generate invalid memory references.
`int`
`setdomainname(String name, int len)`
`int`
`setegid(int gid)`
`int`
`setenv(String name, String value, int overwrite)`
Update or add a variable in the environment of the calling process.
`int`
`seteuid(int uid)`
`int`
`setgid(int gid)`
`int`
`sethostname(String name, int len)`
`int`
`setuid(int uid)`
`int`
`unsetenv(String name)`

### Methods inherited from interface com.sun.jna.platform.unix.Reboot

`reboot`

### Methods inherited from interface com.sun.jna.platform.unix.Resource

`getrlimit, setrlimit`

## Field Details

### HOST_NAME_MAX

static final int HOST_NAME_MAX

See Also:
  - Constant Field Values

## Method Details

### getuid

int getuid()

### geteuid

int geteuid()

### getgid

int getgid()

### getegid

int getegid()

### setuid

int setuid(int uid)

### seteuid

int seteuid(int uid)

### setgid

int setgid(int gid)

### setegid

int setegid(int gid)

### gethostname

int gethostname(byte[] name, int len)

### sethostname

int sethostname(String name, int len)

### getdomainname

int getdomainname(byte[] name, int len)

### setdomainname

int setdomainname(String name, int len)

### getenv

String getenv(String name)

Parameters:
  `name` - Environment variable name
Returns:
  Returns the value in the environment, or `null` if there is no match for the name
See Also:
  - getenv(3)

### setenv

int setenv(String name, String value, int overwrite)
Update or add a variable in the environment of the calling process.

Parameters:
  `name` - Environment variable name
  `value` - Required value
  `overwrite` - If the environment variable already exists and the value of `overwrite` is non-zero, the function shall return success and the environment shall be updated. If the environment variable already exists and the value of `overwrite` is zero, the function shall return success and the environment shall remain unchanged.
Returns:
  Upon successful completion, zero shall be returned. Otherwise, -1 shall be returned, `errno` set to indicate the error, and the environment shall be unchanged
See Also:
  - getenv(3)

### unsetenv

int unsetenv(String name)

Parameters:
  `name` - Environment variable name - If the named variable does not exist in the current environment, the environment shall be unchanged and the function is considered to have completed successfully.
Returns:
  Upon successful completion, zero shall be returned. Otherwise, -1 shall be returned, `errno` set to indicate the error, and the environment shall be unchanged
See Also:
  - getenv(3)

### getloadavg

int getloadavg(double[] loadavg, int nelem)
The getloadavg() function returns the number of processes in the system run queue averaged over various periods of time. Up to nelem samples are retrieved and assigned to successive elements of loadavg[]. The system imposes a maximum of 3 samples, representing averages over the last 1, 5, and 15 minutes, respectively.

Parameters:
  `loadavg` - An array of doubles which will be filled with the results
  `nelem` - Number of samples to return
Returns:
  If the load average was unobtainable, -1 is returned; otherwise, the number of samples actually retrieved is returned.
See Also:
  - getloadavg(3)

### close

int close(int fd)
Closes a file descriptor, so that it no longer refers to any file and may be reused. Any record locks held on the file it was associated with, and owned by the process, are removed (regardless of the file descriptor that was used to obtain the lock).

If `fd` is the last file descriptor referring to the underlying open file description, the resources associated with the open file description are freed; if the file descriptor was the last reference to a file which has been removed using `unlink`, the file is deleted.

Parameters:
  `fd` - a file descriptor
Returns:
  returns zero on success. On error, -1 is returned, and `errno` is set appropriately.

  `close()` should not be retried after an error.

### msync

int msync(Pointer addr, LibCAPI.size_t length, int flags)
Flushes changes made to the in-core copy of a file that was mapped into memory using `LibCUtil.mmap(Pointer, long, int, int, int, long)` back to the filesystem. Without use of this call, there is no guarantee that changes are written back before `munmap(Pointer, size_t)` is called. To be more precise, the part of the file that corresponds to the memory area starting at `addr` and having length `length` is updated.

Parameters:
  `addr` - The start of the memory area to sync to the filesystem.
  `length` - The length of the memory area to sync to the filesystem.
  `flags` - The flags argument should specify exactly one of `MS_ASYNC` and `MS_SYNC`, and may additionally include the `MS_INVALIDATE` bit.
Returns:
  On success, zero is returned. On error, -1 is returned, and `errno` is set appropriately.

### munmap

int munmap(Pointer addr, LibCAPI.size_t length)
Deletes the mappings for the specified address range, and causes further references to addresses within the range to generate invalid memory references. The region is also automatically unmapped when the process is terminated. On the other hand, closing the file descriptor does not unmap the region.

It is not an error if the indicated range does not contain any mapped pages.

Parameters:
  `addr` - The base address from which to delete mappings. The address addr must be a multiple of the page size (but length need not be).
  `length` - The length from the base address to delete mappings. All pages containing a part of the indicated range are unmapped, and subsequent references to these pages will generate `SIGSEGV`.
Returns:
  On success, returns 0. On failure, it returns -1, and `errno` is set to indicate the cause of the error (probably to `EINVAL`).