blob: dfdbd89ced31da26fb077022a9ea9a1dec5fa508 [file] [log] [blame]
/*
* cnode.h -- Vic Abell's definition of an nsc_cfs node - with help from
* the kind folks at SCO
*/
/*
* Copyright 2001 Purdue Research Foundation, West Lafayette, Indiana
* 47907. All rights reserved.
*
* Written by Victor A. Abell
*
* This software is not subject to any license of the American Telephone
* and Telegraph Company or the Regents of the University of California.
*
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
*
* 1. Neither the authors nor Purdue University are responsible for any
* consequences of the use of this software.
*
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Credit to the authors and Purdue
* University must appear in documentation and sources.
*
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 4. This notice may not be removed or altered.
*/
#if !defined(FS_NSC_CFS_CNODE_H)
#define FS_NSC_CFS_CNODE_H 1
#include <sys/nsc_synch.h>
/*
* chandle_t definition from the kernel's <fs/nsc_cfs/cfs.h>
*/
#define CFS_FHSIZE 44
typedef struct cfhandle {
char fh_data[CFS_FHSIZE];
} cfhandle_t;
/*
* CFS node structure
*/
typedef struct cnode {
struct cnode *c_freef; /* free list forward pointer */
struct cnode *c_freeb; /* free list back pointer */
struct cnode *c_hash; /* cnode hash chain */
struct vnode c_vnode; /* vnode for remote file */
cfhandle_t c_fh; /* file handle */
void *c_hp; /* Hash pointer */
u_long c_flags; /* flags, see below */
union {
daddr_t C_nextr; /* next byte read offset (read-ahead) */
int C_lastcookie; /* last readdir cookie */
} c_c;
long c_owner; /* proc index for locker of cnode */
long c_count; /* number of cnode locks for c_owner */
long c_lwpid; /* lwp id of locker of cnode */
CONDITION_T c_cxlock; /* Synch structure */
int c_rw_excl; /* RW locked exclusively */
/* Credentials here are only for use by cfs-as-nfs-client. */
struct cred *c_cred; /* current credentials */
struct vattr c_attr; /* cached vnode attributes */
/*
* Lsof needs nothing below c_attr.
*/
} cnode_t;
#endif /* !defined(FS_NSC_CFS_CNODE_H) */