ken@gvax.cs.cornell.edu (Ken Birman) (01/16/90)
As usual, your comments and suggestions would be appreciated. We added this for META and Deceit, which needed cheaper ways to maintain subsets of the membership of a process group -- and wanted to be able to use such subsets in calls to the new BYPASS communication facilities. .TH PG_LIST 3 "1 February 1989" ISIS "ISIS LIBRARY FUNCTIONS" .SH NAME pgl_create, pgl_add, pgl_remove, pgl_list, pgl_get, pgl_makegroup \- manage process lists .SH SYNOPSIS \fB#include "isis.h"\fR .PP \fBaddress *pgl_create(gaddr_p, alist), *pgl_makegroup(list_p, gname);\fR .br \fBaddress *alist;\fR .br \fBchar *gname;\fR .PP \fBvoid pgl_add(list_p, addr_p), pgl_remove(list_p, addr_p);\fR .PP \fBaddress *pgl_get(list_p);\fR .PP \fBvoid pgl_delete(list_p);\fR .SH DESCRIPTION .B pgl_create is used to create a \fIprocess list\fR. Such a list is referenced using a \fIlist pointer\fR of type \fIaddress\fR, but known only within the address space of the process that invoked \fBpgl_create\fR. The initial membership of the list will be as specified in the null terminated array of addresses given by the\fBalist\fR argument. Later, the membership is automatically changed if processes fail, and cal also be manually changed by calls to \fBpgl_add\fR and \fBpgl_remove\fR specifying a process whose address should be, respectively, appended to the list or removed from it. The list can be deleted by a call to \fBpgl_delete\fR. The process group list facility requires that the list be a \fIsubset\fR of the membership of some process group to which the creator of the list belongs. This ``parent group'' is designated at the time of list creation and will be monitored by the list facility to detect failures of listed processes. If a process in the initial list or an argument to \fBpgl_add\fR is not a member of the parent group, it will be excluded silently from the list. The major reason for creating a process list is that it can be used in calls to the ISIS multicast interface. This permits the user to overcome one of the limitations on the bypass communication protocols, namely that the destination be either a single group to which the sender belongs, or a single process that belongs to some group that the sender also belongs to. When using a process list as the destination in a multicast, ISIS will route the resulting communication via the so-called ``bypass'' protocol suite, just as if the list address were a real process group address. In contrast, if the same destinations were ``spelled out'' by passing a null-terminated vector of their process addresses directly to the multicast interface, the bypass protocols would not be used and communication performance would suffer. A process list cannot be monitored or used like a process-group address. Moreover, one cannot pass a list address to a remote process. However, if desired, a list can be ``turned into'' a process group using the \fBpgl_makegroup\fR facility, which creates process group and returns its address. .SH BUGS The major disadvantage of a process list is that the members do not know that they belong to the list. Consequently, the facility cannot be used to obtain fault-tolerance as in a coordinator-cohort computation.