OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [librpc/] [include/] [rpcsvc/] [klm_prot.x] - Rev 173

Compare with Previous | Blame | View Log

/*
 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
 * unrestricted use provided that this legend is included on all tape
 * media and as a part of the software program in whole or part.  Users
 * may copy or modify Sun RPC without charge, but are not authorized
 * to license or distribute it to anyone else except as part of a product or
 * program developed by the user.
 * 
 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
 * 
 * Sun RPC is provided with no support and without any obligation on the
 * part of Sun Microsystems, Inc. to assist in its use, correction,
 * modification or enhancement.
 * 
 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
 * OR ANY PART THEREOF.
 * 
 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
 * or profits or other special, indirect and consequential damages, even if
 * Sun has been advised of the possibility of such damages.
 * 
 * Sun Microsystems, Inc.
 * 2550 Garcia Avenue
 * Mountain View, California  94043
 */

/*
 * Kernel/lock manager protocol definition
 * Copyright (C) 1986 Sun Microsystems, Inc.
 *
 * protocol used between the UNIX kernel (the "client") and the
 * local lock manager.  The local lock manager is a deamon running
 * above the kernel.
 */

#ifndef RPC_HDR
%#ifndef lint
%/*static char sccsid[] = "from: @(#)klm_prot.x 1.7 87/07/08 Copyr 1987 Sun Micro";*/
%/*static char sccsid[] = "from: @(#)klm_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
%static const char rcsid[] =
%  "$FreeBSD: src/include/rpcsvc/klm_prot.x,v 1.6 1999/08/27 23:45:08 peter Exp $";
%#endif /* not lint */
#endif

const   LM_MAXSTRLEN = 1024;

/*
 * lock manager status returns
 */
enum klm_stats {
        klm_granted = 0,        /* lock is granted */
        klm_denied = 1,         /* lock is denied */
        klm_denied_nolocks = 2, /* no lock entry available */
        klm_working = 3         /* lock is being processed */
};

/*
 * lock manager lock identifier
 */
struct klm_lock {
        string server_name<LM_MAXSTRLEN>;
        netobj fh;              /* a counted file handle */
        int pid;                /* holder of the lock */
        unsigned l_offset;      /* beginning offset of the lock */
        unsigned l_len;         /* byte length of the lock;
                                 * zero means through end of file */
};

/*
 * lock holder identifier
 */
struct klm_holder {
        bool exclusive;         /* FALSE if shared lock */
        int svid;               /* holder of the lock (pid) */
        unsigned l_offset;      /* beginning offset of the lock */
        unsigned l_len;         /* byte length of the lock;
                                 * zero means through end of file */
};

/*
 * reply to KLM_LOCK / KLM_UNLOCK / KLM_CANCEL
 */
struct klm_stat {
        klm_stats stat;
};

/*
 * reply to a KLM_TEST call
 */
union klm_testrply switch (klm_stats stat) {
        case klm_denied:
                struct klm_holder holder;
        default: /* All other cases return no arguments */
                void;
};


/*
 * arguments to KLM_LOCK
 */
struct klm_lockargs {
        bool block;
        bool exclusive;
        struct klm_lock alock;
};

/*
 * arguments to KLM_TEST
 */
struct klm_testargs {
        bool exclusive;
        struct klm_lock alock;
};

/*
 * arguments to KLM_UNLOCK
 */
struct klm_unlockargs {
        struct klm_lock alock;
};

program KLM_PROG {
        version KLM_VERS {

                klm_testrply    KLM_TEST (struct klm_testargs) =        1;

                klm_stat        KLM_LOCK (struct klm_lockargs) =        2;

                klm_stat        KLM_CANCEL (struct klm_lockargs) =      3;
                /* klm_granted=> the cancel request fails due to lock is already granted */
                /* klm_denied=> the cancel request successfully aborts
lock request  */

                klm_stat        KLM_UNLOCK (struct klm_unlockargs) =    4;
        } = 1;
} = 100020;

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.