Просмотр исходного кода

(Logical change 1.65)

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@238 fd59a12c-fef9-0310-b244-a6a79926bd2f
Steven Dake 21 лет назад
Родитель
Сommit
e9fc92be20
11 измененных файлов с 1182 добавлено и 0 удалено
  1. 49 0
      man/Makefile
  2. 100 0
      man/evs_dispatch.3
  3. 67 0
      man/evs_fd_get.3
  4. 63 0
      man/evs_finalize.3
  5. 118 0
      man/evs_initialize.3
  6. 102 0
      man/evs_join.3
  7. 97 0
      man/evs_leave.3
  8. 202 0
      man/evs_mcast_groups.3
  9. 175 0
      man/evs_mcast_joined.3
  10. 180 0
      man/evs_overview.8
  11. 29 0
      man/index.html

+ 49 - 0
man/Makefile

@@ -0,0 +1,49 @@
+# Copyright (c) 2004 MontaVista Software, Inc.
+# 
+# All rights reserved.
+# 
+# This software licensed under BSD license, the text of which follows:
+# 
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# 
+# - Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright notice,
+#   this list of conditions and the following disclaimer in the documentation
+#   and/or other materials provided with the distribution.
+# - Neither the name of the MontaVista Software, Inc. nor the names of its
+#   contributors may be used to endorse or promote products derived from this
+#   software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+all: html
+# The index.html file must be hand edited when adding manual pages
+
+html:
+	mkdir html
+	groff -mandoc -Thtml evs_overview.8 > html/evs_overview.html
+	groff -mandoc -Thtml evs_initialize.3 > html/evs_initialize.html
+	groff -mandoc -Thtml evs_finalize.3 > html/evs_finalize.html
+	groff -mandoc -Thtml evs_fd_get.3 > html/evs_fd_get.html
+	groff -mandoc -Thtml evs_dispatch.3 > html/evs_dispatch.html
+	groff -mandoc -Thtml evs_join.3 > html/evs_join.html
+	groff -mandoc -Thtml evs_leave.3 > html/evs_leave.html
+	groff -mandoc -Thtml evs_mcast_groups.3 > html/evs_mcast_groups.html
+	groff -mandoc -Thtml evs_mcast_joined.3 > html/evs_mcast_joined.html
+	cp index.html html
+
+clean:
+	rm -rf html
+

+ 100 - 0
man/evs_dispatch.3

@@ -0,0 +1,100 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_DISPATCH 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_dispatch \- Dispatches callbacks from the EVS service
+.SH SYNOPSIS
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_dispatch(evs_handle_t *" handle ", evs_dispatch_t *" dispatch_types ");
+.SH DESCRIPTION
+The
+.B evs_dispatch
+function is used to dispatch configuration changes or messages from the
+extended virtual synchrony API.
+.PP
+Each application may have several connections to the EVS API.  Each  application
+uses the 
+.I handle
+argument to uniquely identify the connection.
+.PP
+The
+.I dispatch_types
+argument is used to identify the type of dispatch to execute.  The possible types are
+defined by the structure:
+
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef enum {
+        EVS_DISPATCH_ONE,
+        EVS_DISPATCH_ALL,
+        EVS_DISPATCH_BLOCKING
+} evs_dispatch_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The dispatch values have the following meanings:
+.TP
+.B EVS_DISPATCH_ONE
+Dispatch atleast one callback, blocking until the callback is dispatched.
+.TP
+.B EVS_DISPATCH_ALL
+Dispatch all waiting callbacks without blocking to wait for any callbacks.
+.TP
+.B EVS_DISPATCH_BLOCKING
+Dispatch all callbacks blocking indefinately.  This is used in a threaded
+program where a thread is created, and then evs_dispatch() is called immediately
+from the created thread to execute callbacks.
+
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_initialize (3),
+.BR evs_finalize (3),
+.BR evs_fd_get (3),
+.BR evs_join (3),
+.BR evs_leave (3),
+.BR evs_mcast_joined (3),
+.BR evs_mcast_groups (3)
+.PP

+ 67 - 0
man/evs_fd_get.3

@@ -0,0 +1,67 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_FD_GET 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_fd_get \- Dispatches callbacks from the EVS service
+.SH SYNOPSIS
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_fd_get(evs_handle_t *" handle ", int *" fd ");
+.SH DESCRIPTION
+The
+.B evs_fd_get
+function is used to retrieve the file descriptor that may be used with the poll
+system call to determine when
+.B evs_dispatch(3)
+won't block.  The
+.I handle
+argument may not be used directly with
+.B poll
+because it is not the file descriptor, but instead an internal identifier used
+by the EVS library.
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_initialize (3),
+.BR evs_finalize (3),
+.BR evs_dispatch (3),
+.BR evs_join (3),
+.BR evs_leave (3),
+.BR evs_mcast_joined (3),
+.BR evs_mcast_groups (3)
+.PP

+ 63 - 0
man/evs_finalize.3

@@ -0,0 +1,63 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_FINALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_finalize \- Terminate a connection to the EVS service
+.SH SYNOPSIS
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_finalize(evs_handle_t *" handle ");
+.SH DESCRIPTION
+The
+.B evs_finalize
+function is used to close a connection to the extended virtual synchrony API.
+Once the connection is finalized, the handle may not be used again by applications.
+No more callbacks will be dispatched from the
+.B evs_dispatch function.
+.PP
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_initialize (3),
+.BR evs_fd_get (3),
+.BR evs_dispatch (3),
+.BR evs_join (3),
+.BR evs_leave (3),
+.BR evs_mcast_joined (3),
+.BR evs_mcast_groups (3)
+.PP

+ 118 - 0
man/evs_initialize.3

@@ -0,0 +1,118 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_INITIALIZE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_initialize \- Create a new connection to the EVS service
+.SH SYNOPSIS
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_initialize(evs_handle_t *" handle ", evs_callbacks_t *" callbacks ");
+.SH DESCRIPTION
+The
+.B evs_initialize
+function is used to initialize a connection to the extended virtual synchrony API.
+.PP
+Each application may have several connections to the EVS API.  Each  application
+uses the 
+.I handle
+argument to uniquely identify the connection.  The
+.I handle
+argument is then used in other function calls to identify the connection to be used
+for communication with the EVS service.
+.PP
+Every time an EVS event occurs, one of the callbacks specified by the argument
+.I callbacks
+is called.  The callback functions are described by the following type definitions:
+.PP
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 20n 32n
+typedef void (*evs_deliver_fn_t) (
+        struct in_addr source_addr,
+        void *msg,
+        int msg_len);
+
+typedef void (*evs_confchg_fn_t) (
+        struct in_addr *member_list, int member_list_entries,
+        struct in_addr *left_list, int left_list_entries,
+        struct in_addr *joined_list, int joined_list_entries);
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The
+.I callbacks
+argument is of the type:
+.IP
+.RS
+.ne 18
+.nf
+.PP
+typedef struct {
+        evs_deliver_fn_t evs_deliver_fn;
+        evs_confchg_fn_t evs_confchg_fn;
+} evs_callbacks_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+When a configuration change occurs or a message is to be delivered one of the callbacks
+is called from the
+.B evs_dispatch()
+function.  If a configuration change occurs,
+.I evs_confchg_fn
+is called.  If a delivery of a message occurs,
+.I evs_deliver_fn
+is called.
+
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_finalize (3),
+.BR evs_fd_get (3),
+.BR evs_dispatch (3),
+.BR evs_join (3),
+.BR evs_leave (3),
+.BR evs_mcast_joined (3),
+.BR evs_mcast_groups (3)
+.PP

+ 102 - 0
man/evs_join.3

@@ -0,0 +1,102 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_JOIN 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_join \- Joins one or more groups in the EVS library
+.SH SYNOPSIS
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_join(evs_handle_t *" handle ", evs_group_t *" groups ", int " group_entries ");
+.SH DESCRIPTION
+The
+.B evs_join
+function is used to join one or more groups.  When a group is joined, using the
+.B evs_mcast_joined(3)
+function will multicast to the groups joined in the argument
+.I handle.
+Messages that are sent to any of the groups joined to the parameter
+.I handle
+will be delivered by
+.B evs_dispatch(3).
+.PP
+This call may be used more then once on a handle, in which case the joined groups will
+be all of the groups passed to the
+.B evs_join(3)
+function during the lifecycle of the parameter
+.I handle.
+.PP
+
+The argument
+.I groups
+is used to specify the groups to join.  A group is a 32 byte key.  The key is
+not a string, hence, the entire key is used when joining the channel.  For that reason
+the entire group should be initialized.
+.PP
+The argument
+.I group_entries
+specifies how many entries are located in the groups argument.
+
+The
+.I groups
+argument is of the type evs_group_t which is defined by the structure:
+
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef struct {
+        char key[32];
+} evs_groups_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_initialize (3),
+.BR evs_finalize (3),
+.BR evs_fd_get (3),
+.BR evs_dispatch (3),
+.BR evs_leave (3),
+.BR evs_mcast_joined (3),
+.BR evs_mcast_groups (3)
+.PP

+ 97 - 0
man/evs_leave.3

@@ -0,0 +1,97 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_LEAVE 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_leave \- Leave one or more groups in the EVS library
+.SH SYNOPSIS
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_leave(evs_handle_t *" handle ", evs_group_t *" groups ", int group_entries);
+.SH DESCRIPTION
+The
+.B evs_leave
+function is used to leave one or more groups.  The joined groups are used with 
+.B evs_mcast_joined(3)
+function to multicast to the groups joined in the argument
+.I handle.
+Messages that are sent to any of the joined groups to the parameter
+.I handle
+will be delivered by
+.B evs_dispatch(3).
+.PP
+This call may be used more then once on a handle.
+.PP
+
+The argument
+.I groups
+is used to specify the groups to leave.  A group is a 32 byte key.  The key is
+not a string, hence, the entire key is used when leaveing the channel.  For that reason
+the entire group should be initialized.
+.PP
+The argument
+.I group_entries
+specifies how many entries are located in the groups argument.
+
+The
+.I groups
+argument is of the type evs_group_t which is defined by the structure:
+
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef struct {
+        char key[32];
+} evs_groups_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_initialize (3),
+.BR evs_finalize (3),
+.BR evs_fd_get (3),
+.BR evs_dispatch (3),
+.BR evs_join (3),
+.BR evs_mcast_joined (3),
+.BR evs_mcast_groups (3)
+.PP

+ 202 - 0
man/evs_mcast_groups.3

@@ -0,0 +1,202 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_MCAST_GROUPS 3 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_join \- Multicast a message to selected groups
+.SH SYNOPSIS
+.B #include <sys/uio.h>
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_mcast_gruops(evs_handle_t *" handle ", evs_guraantee_t " guarantee ", evs_priority_t " priority ", evs_group_t *" groups ", int group_entries, struct iovec *" iovec ", int " iov_len ");
+.SH DESCRIPTION
+The
+.B evs_mcast_groups(3)
+function multicasts a message to all the groups specified in the arguemnt
+.I groups.
+Messages are delivered to all processors in the system that are described by the current
+configuration.
+.PP
+The argument
+.I handle
+describes a handle created with
+.B evs_initialize(3).
+.PP
+The argument
+.I guarantee
+requests a delivery guarantee for the message to be sent.  The evs_guarantee_t type is
+defined by:
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef enum {
+	EVS_TYPE_UNORDERED,	/* not implemented */
+	EVS_TYPE_FIFO,          /* same as agreed */
+	EVS_TYPE_AGREED,	/* implemented */
+	EVS_TYPE_SAFE           /* not implemented */
+} evs_guarantee_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The meanings of the evs_gaurantee_t typedef are:
+.TP
+.B EVS_GUARANTEE_UNORDERED
+Messages are guaranteed to be delivered, but with no particular order.  This 
+mode is unimplemented in the EVS library.
+.TP
+.B EVS_GUARANTEE_FIFO
+Messages are guaranteed to be delivered in first sent first delivery order
+from one one.  In fact, this guarantee is actually the AGREED guarantee.
+.TP
+.B EVS_GUARANTEE_AGREED
+All processors must agree on the order of delivery.  If a message is sent
+from two or more processors at about the same time, the delivery will occur
+in the same order to all processors.
+.TP
+.B EVS_GUARANTEE_SAFE
+All processors must agree on the order of delivery.  Further all processors
+must have a copy of the message before any delivery takes place.  This mode is
+unimplemented in the EVS library.
+.PP
+The argument
+.I priority
+describes the priority at which a message will be sent.  Messages will be sent with
+higher priorities before messages with lower priorities.  This requirement only applies
+to the local processor.  If two processors have two different priority messages, the
+messages may be sent from either priority depending on the algorithm of the EVS library.
+
+The evs_priority_t typedef is described by:
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef enum {
+        EVS_PRIO_RECOVERY,
+        EVS_PRIO_HIGH,
+        EVS_PRIO_MED,
+        EVS_PRIO_LOW
+} evs_priority_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The meanings of the evs_priority_t typedef are:
+.TP
+.B EVS_PRIO_RECOVERY
+Messages are sent from this priority level first.  This priority level is used
+for recovery of state after a partition or merge occurs.
+.TP
+.B EVS_PRIO_HIGH
+Messages are sent from this priority level second.
+.TP
+.B EVS_PRIO_MED
+Messages are sent from this priority level third.
+.I groups
+.TP
+.B EVS_PRIO_LOW
+Messages are sent from this priority level fourth.
+.PP
+The
+.I groups
+argument is of the type evs_group_t which is defined by the structure:
+
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef struct {
+	char key[32];
+} evs_groups_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The
+.I group_entries
+argument describes the number of entries in the
+.I group
+argument.
+.PP
+
+The
+.I iovec
+argument describes the scatter/gather list which is used to transmit a message.  This
+is a standard socket structure described by:
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+struct iovec
+{
+	void *iov_base;     /* Pointer to data.  */
+	size_t iov_len;     /* Length of data.  */
+};
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The
+.I iovlen
+argument describes the number of entires in the
+.I iovec
+argument.  
+
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_initialize (3),
+.BR evs_finalize (3),
+.BR evs_fd_get (3),
+.BR evs_dispatch (3),
+.BR evs_leave (3),
+.BR evs_join (3),
+.BR evs_mcast_joined (3)
+.PP

+ 175 - 0
man/evs_mcast_joined.3

@@ -0,0 +1,175 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_MCAST_JOINED 3 3004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH NAME
+evs_join \- Multicasts to all groups joined to an handle
+.SH SYNOPSIS
+.B #include <sys/uio.h>
+.B #include <openais/evs.h>
+.sp
+.BI "int evs_mcast_joined(evs_handle_t *" handle ", evs_guraantee_t " guarantee ", evs_priority_t " priority ", struct iovec *" iovec ", int " iov_len ");
+.SH DESCRIPTION
+The
+.B evs_mcast_joined
+function is multicast a message to all the groups that have been joined with the
+.B evs_join(3)
+function for the argument
+.I handle.
+Messages that are sent to any of the groups joined to the parameter
+.I handle
+will be delivered to all processors in the system.
+.PP
+The argument
+.I guarantee
+requests a delivery guarantee for the message to be sent.  The evs_guarantee_t type is
+defined by:
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef enum {
+	EVS_TYPE_UNORDERED,	/* not implemented */
+	EVS_TYPE_FIFO,          /* same as agreed */
+	EVS_TYPE_AGREED,	/* implemented */
+	EVS_TYPE_SAFE           /* not implemented */
+} evs_guarantee_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The meanings of the evs_gaurantee_t typedef are:
+.TP
+.B EVS_GUARANTEE_UNORDERED
+Messages are guaranteed to be delivered, but with no particular order.  This 
+mode is unimplemented in the EVS library.
+.TP
+.B EVS_GUARANTEE_FIFO
+Messages are guaranteed to be delivered in first sent first delivery order
+from one one.  In fact, this guarantee is actually the AGREED guarantee.
+.TP
+.B EVS_GUARANTEE_AGREED
+All processors must agree on the order of delivery.  If a message is sent
+from two or more processors at about the same time, the delivery will occur
+in the same order to all processors.
+.TP
+.B EVS_GUARANTEE_SAFE
+All processors must agree on the order of delivery.  Further all processors
+must have a copy of the message before any delivery takes place.  This mode is
+unimplemented in the EVS library.
+.PP
+The argument
+.I priority
+describes the priority at which a message will be sent.  Messages will be sent with
+higher priorities before messages with lower priorities.  This requirement only applies
+to the local processor.  If two processors have two different priority messages, the
+messages may be sent from either priority depending on the algorithm of the EVS library.
+
+The evs_priority_t typedef is described by:
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+typedef enum {
+        EVS_PRIO_RECOVERY,
+        EVS_PRIO_HIGH,
+        EVS_PRIO_MED,
+        EVS_PRIO_LOW
+} evs_priority_t;
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The meanings of the evs_priority_t typedef are:
+.TP
+.B EVS_PRIO_RECOVERY
+Messages are sent from this priority level first.  This priority level is used
+for recovery of state after a partition or merge occurs.
+.TP
+.B EVS_PRIO_HIGH
+Messages are sent from this priority level second.
+.TP
+.B EVS_PRIO_MED
+Messages are sent from this priority level third.
+.I groups
+.TP
+.B EVS_PRIO_LOW
+Messages are sent from this priority level fourth.
+.PP
+The
+.I iovec
+argument describes the scatter/gather list which is used to transmit a message.  This
+is a standard socket structure described by:
+.IP
+.RS
+.ne 18
+.nf
+.ta 4n 30n 33n
+struct iovec
+{
+	void *iov_base;     /* Pointer to data.  */
+	size_t iov_len;     /* Length of data.  */
+};
+.ta
+.fi
+.RE
+.IP
+.PP
+.PP
+The
+.I iovlen
+argument describes the number of entires in the
+.I iovec
+argument.  
+
+.SH RETURN VALUE
+This call returns the EVS_OK value if successful, otherwise an error is returned.
+.PP
+.SH ERRORS
+The errors are undocumented.
+.SH "SEE ALSO"
+.BR evs_overview (8),
+.BR evs_initialize (3),
+.BR evs_finalize (3),
+.BR evs_fd_get (3),
+.BR evs_dispatch (3),
+.BR evs_leave (3),
+.BR evs_join (3),
+.BR evs_mcast_groups (3)
+.PP

+ 180 - 0
man/evs_overview.8

@@ -0,0 +1,180 @@
+.\"/*
+.\" * Copyright (c) 2004 MontaVista Software, Inc.
+.\" *
+.\" * All rights reserved.
+.\" *
+.\" * Author: Steven Dake (sdake@mvista.com)
+.\" *
+.\" * This software licensed under BSD license, the text of which follows:
+.\" * 
+.\" * Redistribution and use in source and binary forms, with or without
+.\" * modification, are permitted provided that the following conditions are met:
+.\" *
+.\" * - Redistributions of source code must retain the above copyright notice,
+.\" *   this list of conditions and the following disclaimer.
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
+.\" *   this list of conditions and the following disclaimer in the documentation
+.\" *   and/or other materials provided with the distribution.
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
+.\" *   contributors may be used to endorse or promote products derived from this
+.\" *   software without specific prior written permission.
+.\" *
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
+.\" */
+.TH EVS_OVERVIEW 8 2004-08-31 "openais Man Page" "Openais Programmer's Manual"
+.SH OVERVIEW
+The EVS library is delivered with the openais project.  This library is used
+to create distributed applications that operate properly during partitions, merges,
+and faults.
+.PP
+The library provides a mechanism to:
+* handle abstraction for multiple instances of an EVS library in one application
+* Deliver messages
+* Deliver configuration changes
+* join one or more groups
+* leave one or more groups
+* send messages to one or more groups
+* send messages to currently joined groups
+.PP
+The EVS library implements a messaging model known as Extended Virtual Synchrony.
+This model allows one sender to transmit to many receivers using standard UDP/IP.
+UDP/IP is unreliable and unordered, so the EVS library applies ordering and reliability
+to messages.  Hardware multicast is used to avoid duplicated packets with two or more
+receivers.  Erroneous messages are corrected automatically by the library.
+.PP
+Certain gaurantees are provided by the EVS library.  These guarantees are related to
+message delivery and configuration change delivery.
+.SH DEFINITIONS
+.TP
+.B multicast
+A multicast occurs when a network interface card sends a UDP packet to multiple
+receivers simulatenously.
+.TP
+.B processor
+A processor is the entity that executes the extended virtual synchrony algorithms.
+.TP
+.B configuration
+A configuration is the current description of the processors executing the extended
+virtual syncrhony algorithm.
+.TP
+.B configuration change
+A configuration change occurs when a new configuration is delivered.
+.TP
+.B partition
+A partition occurs when a configuration splits into two or more configurations, or
+a processor fails or is stopped and leaves the configuration.
+.TP
+.B merge
+A merge occurs when two or more configurations join into a larger new configuration.  When
+a new processor starts up, it is treated as a configuration with only one processor
+and a merge occurs.
+.TP
+.B fifo ordering
+A message is FIFO ordered when one sender and one receiver agree on the order of the
+messages sent.
+.TP
+.B agreed ordering
+A message is AGREED ordered when all processors agree on the order of the messages sent.
+.TP
+.B safe ordering
+A message is SAFE ordered when all processors agree on the order of messages sent and
+those messages are not delivered until all processors have a copy of the message to
+deliver.
+.TP
+.B virtual syncrhony
+Virtual syncrhony is obtained when all processors agree on the order of messages
+sent and configuration changes sent for each new configuration.
+.SH USING VIRTUAL SYNCHRONY
+The virtual synchrony messaging model has many benefits for developing distributed
+applications.  Applications designed using replication have the most benefits.  Applications
+that must be able to partition and merge also benefit from the virtual synchrony messaging
+model.
+.PP
+All applications receive a copy of transmitted messages even if there are errors on the
+transmission media.  This allows optimiziations when every processor must receive a copy
+of the message for replication.
+.PP
+All messages are ordered according to agreed ordering.  This mechanism allows the avoidance
+of race conditions.  Consider a lock service implemented over several processors.  Two 
+requests occur at the same time on two seperate processors.  The requests are ordered for
+every processor in the same order and delivered to the processors.  Then all processors
+will get request A before request B and can reject request B.  Any type of creation or
+deletion of a shared data structure can benefit from this mechanism.
+.PP
+Self delivery ensures that messages that are sent by a processor are also delivered back
+to that processor.  This allows the processor sending the message to execute logic when
+the message is self delivered according to agreed ordering and the virtual synchrony rules.
+It also permits all logic to be placed in one message handler instead of two seperate places.
+.PP
+Virtual Synchrony allows the current configuration to be used to make decisions in partitions
+and merges.  Since the configuration is sent in the stream of messages to the application,
+the application can alter its behavior based upon the configuration changes.
+.SH ARCHITECTURE AND ALGORITHM
+The EVS library is a thin IPC interface to the openais executive.  The openais executive
+provides services for the SA Forum AIS libraries as well as the EVS library.
+.PP
+The openais executive uses a ring protocol and membership protocol to send messages
+according to the semantics required by extended virtual synchrony.  The ring protocol
+creates a virtual ring of processors.  A token is rotated around the ring of processors.
+When the token is possessed by a processor, that processor may multicast messages to
+other processors in the system.
+.PP
+The token is called the ORF token (for ordering, reliability, flow control).  The ORF
+token orders all messages by increasing a sequence number every time a message is
+multicasted.  In this way, an ordering is placed on all messages that all processors
+agree to.  The token also contains a retransmission list.  If a token is received by
+a processor that has not yet received a message it should have, a message sequence
+number is added to the retransmission list.  A processor that has a copy of the message
+then retransmits the message.  The ORF token provides configuration-wide flow control
+by tracking the number of messages sent and limiting the number of messages that may
+be sent by one processor on each posession of the token.
+.PP
+The membership protocol is responsible for ring formation and detecting when a processor
+within a ring has failed.  If the token fails to make a rotation within a timeout period
+known as the token rotation timeout, the membership protocol will form a new ring.
+If a new processor starts, it will also form a new ring.  Two or more configurations
+may be used to form a new ring, allowing many partitions to merge together into one
+new configuration.
+.SH PERFORMANCE
+The EVS library obtains 8.5MB/sec throughput on 100 mbit network links with
+many processors.  Larger messages obtain better throughput results because the
+time to access Ethernet is about the same for a small message as it is for a
+larger message.  Smaller messages obtain better messages per second, because the
+time to send a message is not exactly the same.
+.PP
+80% of CPU utilization occurs because of encryption and authentication.  The openais
+can be built without encryption and authentication for those with no security
+requirements and low CPU utilization requirements.  Even without encryption or
+authentication, under heavy load, processor utilization can reach 25% on 1.5 GHZ
+CPU processors.
+.PP
+The current openais executive supports 16 processors, however, support for more processors is possible by changing defines in the openais executive.  This is untested, however.
+.SH SECURITY
+The EVS library encrypts all messages sent over the network using the SOBER-128
+stream cipher.  The EVS library uses HMAC and SHA1 to authenticate all messages.
+The EVS library uses SOBER-128 as a pseudo random number generator.  The EVS
+library feeds the PRNG using the /dev/random Linux device.
+.SH BUGS
+This software is not yet production, so there may still be some bugs.  But it appears
+there are very few since nobody reports any unknown bugs at this point.
+.SH "SEE ALSO"
+.BR evs_initialize (3),
+.BR evs_finalize (3),
+.BR evs_fd_get (3),
+.BR evs_dispatch (3),
+.BR evs_join (3),
+.BR evs_leave (3),
+.BR evs_mcast_joined (3),
+.BR evs_mcast_groups (3)
+
+.PP

+ 29 - 0
man/index.html

@@ -0,0 +1,29 @@
+<html>
+<head>
+<title>EVS Documentation</title>
+</head>
+<body>
+
+
+<P>
+Welcome to the OpenAIS EVS (extended virtual synchrony) documentation.
+<P>
+<A HREF="evs_overview.html">evs_overview(8)</A>
+<BR>
+<A HREF="evs_initialize.html">evs_initialize(3)</A>
+<BR>
+<A HREF="evs_finalize.html">evs_finalize(3)</A>
+<BR>
+<A HREF="evs_dispatch.html">evs_dispatch(3)</A>
+<BR>
+<A HREF="evs_fd_get.html">evs_fd_get(3)</A>
+<BR>
+<A HREF="evs_join.html">evs_join(3)</A>
+<BR>
+<A HREF="evs_leave.html">evs_leave(3)</A>
+<BR>
+<A HREF="evs_mcast_groups.html">evs_mcast_groups(3)</A>
+<BR>
+<A HREF="evs_mcast_joined.html">evs_mcast_joined(3)</A>
+<P>
+</body>