pgfs_subs.h revision 1.2 1 1.2 yamt /* $NetBSD: pgfs_subs.h,v 1.2 2012/04/11 14:26:19 yamt Exp $ */
2 1.1 yamt
3 1.1 yamt /*-
4 1.1 yamt * Copyright (c)2010,2011 YAMAMOTO Takashi,
5 1.1 yamt * All rights reserved.
6 1.1 yamt *
7 1.1 yamt * Redistribution and use in source and binary forms, with or without
8 1.1 yamt * modification, are permitted provided that the following conditions
9 1.1 yamt * are met:
10 1.1 yamt * 1. Redistributions of source code must retain the above copyright
11 1.1 yamt * notice, this list of conditions and the following disclaimer.
12 1.1 yamt * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 yamt * notice, this list of conditions and the following disclaimer in the
14 1.1 yamt * documentation and/or other materials provided with the distribution.
15 1.1 yamt *
16 1.1 yamt * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 1.1 yamt * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 1.1 yamt * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 1.1 yamt * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 1.1 yamt * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 1.1 yamt * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 1.1 yamt * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 1.1 yamt * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 1.1 yamt * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 1.1 yamt * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 1.1 yamt * SUCH DAMAGE.
27 1.1 yamt */
28 1.1 yamt
29 1.1 yamt struct fileid_lock_handle;
30 1.1 yamt
31 1.1 yamt struct fileid_lock_handle *fileid_lock(fileid_t, struct puffs_cc *);
32 1.1 yamt void fileid_unlock(struct fileid_lock_handle *);
33 1.1 yamt
34 1.1 yamt struct Xconn;
35 1.1 yamt struct vattr;
36 1.1 yamt enum vtype;
37 1.1 yamt
38 1.1 yamt int my_lo_truncate(struct Xconn *, int32_t, int32_t);
39 1.1 yamt int my_lo_lseek(struct Xconn *, int32_t, int32_t, int32_t, int32_t *);
40 1.1 yamt int my_lo_read(struct Xconn *, int32_t, void *, size_t, size_t *);
41 1.1 yamt int my_lo_write(struct Xconn *, int32_t, const void *, size_t, size_t *);
42 1.1 yamt int my_lo_open(struct Xconn *, Oid, int32_t, int32_t *);
43 1.1 yamt int my_lo_close(struct Xconn *, int32_t);
44 1.1 yamt int lo_open_by_fileid(struct Xconn *, fileid_t, int, int *);
45 1.1 yamt
46 1.1 yamt #define GETATTR_TYPE 0x00000001
47 1.1 yamt #define GETATTR_NLINK 0x00000002
48 1.1 yamt #define GETATTR_SIZE 0x00000004
49 1.1 yamt #define GETATTR_MODE 0x00000008
50 1.1 yamt #define GETATTR_UID 0x00000010
51 1.1 yamt #define GETATTR_GID 0x00000020
52 1.1 yamt #define GETATTR_TIME 0x00000040
53 1.1 yamt #define GETATTR_ALL \
54 1.1 yamt (GETATTR_TYPE|GETATTR_NLINK|GETATTR_SIZE|GETATTR_MODE| \
55 1.1 yamt GETATTR_UID|GETATTR_GID|GETATTR_TIME)
56 1.1 yamt
57 1.1 yamt int getattr(struct Xconn *, fileid_t, struct vattr *, unsigned int);
58 1.1 yamt int update_mctime(struct Xconn *, fileid_t);
59 1.1 yamt int update_atime(struct Xconn *, fileid_t);
60 1.1 yamt int update_mtime(struct Xconn *, fileid_t);
61 1.1 yamt int update_ctime(struct Xconn *, fileid_t);
62 1.1 yamt int update_nlink(struct Xconn *, fileid_t, int);
63 1.1 yamt int lookupp(struct Xconn *, fileid_t, fileid_t *);
64 1.1 yamt int mkfile(struct Xconn *, enum vtype, mode_t, uid_t, gid_t, fileid_t *);
65 1.1 yamt int linkfile(struct Xconn *, fileid_t, const char *, fileid_t);
66 1.1 yamt int unlinkfile(struct Xconn *, fileid_t, const char *, fileid_t);
67 1.1 yamt int mklinkfile(struct Xconn *, fileid_t, const char *, enum vtype, mode_t,
68 1.1 yamt uid_t, gid_t, fileid_t *);
69 1.1 yamt int mklinkfile_lo(struct Xconn *, fileid_t, const char *, enum vtype, mode_t,
70 1.1 yamt uid_t, gid_t, fileid_t *, int *);
71 1.2 yamt int cleanupfile(struct Xconn *, fileid_t);
72 1.1 yamt int check_path(struct Xconn *, fileid_t, fileid_t);
73 1.1 yamt int isempty(struct Xconn *, fileid_t, bool *);
74