beostat_get_avail_nodes_by_id

Name

beostat_get_avail_nodes_by_id -- get a list of available nodes for a given identity

Synopsis

#include <sys/beostat.h>

int beostat_get_avail_nodes_by_id (int **node_list, uid_t uid, gid_t *gid_list, int gid_size);

Arguments

node_list

A handle that will have memory allocated and filled with the array of nodes. This memory must be freed by the caller.

uid

The user identifier number

gid_list

A pointer to a list of group identifier numbers

gid_size

The number of elements in the previous arguments array

Description

beostat_get_avail_nodes_by_id will provide a list of nodes that are available to the given user identifier number who also is a member of the group identifer numbers listed. Memory allocated by the function for node_list must be freed by the caller.

Example:

int cnt, *node_list, gid_size, i;
uid_t uid;
gid_t *gid_list;
uid = getuid();
gid_size = getgroups (0, gid_list);
gid_list = malloc (sizeof (gid_t) * gid_size);
getgroups (gid_size, gid_list);
cnt = beostat_get_avail_nodes_by_id (&node_list, uid, gid_list, gid_size);
printf ("You may run jobs on nodes: ");
for (i = 0; i < cnt; i++)
printf ("%d ", node_list[i]); 
printf ("\n");
free (gid_list);
free (node_list);

Return Value

Returns the number of nodes in node_list. If an error occurs it will return -1.

Errors

This function relies on the Beostat subsystem, which consists of the proc filesystem on the remote node, the sendstatsdaemon on the remote node, the recvstats daemon on the master node, and two shared memory files in the directory /var/shm. If any part of the system breaks down, this function could fail.