|
|
1.1 root 1: /******************************************************************************
2: * Copyright (c) 2011 IBM Corporation
3: * All rights reserved.
4: * This program and the accompanying materials
5: * are made available under the terms of the BSD License
6: * which accompanies this distribution, and is available at
7: * http://www.opensource.org/licenses/bsd-license.php
8: *
9: * Contributors:
10: * IBM Corporation - initial implementation
11: *****************************************************************************/
12:
13: #ifndef P9_H
14: #define P9_H
15:
16: #include <stdint.h>
17:
18:
19: #define P9_ERROR -1
20: #define P9_UNKNOWN_VERSION -2
21: #define P9_R_ERROR -3
22: #define P9_MSG_TOO_LONG -4
23: #define P9_UNEXPECTED_MSG -5
24: #define P9_UNEXPECTED_TAG -6
25: #define P9_TRANSPORT_ERROR -7
26: #define P9_NO_TRANSPORT -8
27: #define P9_NULL_PATH -9
28: #define P9_PATH_ELEMENT_TOO_LONG -10
29: #define P9_READ_UNEXPECTED_DATA -11
30: #define P9_NO_BUFFER -12
31: #define P9_MSG_SIZE_TOO_BIG -13
32:
33: #define P9_PARTIAL_WALK 1
34:
35: typedef int (*p9_transact_t)(void *opaque, uint8_t *tx, int tx_size,
36: uint8_t *rx, int *rx_size);
37:
38: typedef struct {
39: uint32_t message_size;
40: char *uname; /* User name. */
41: char *aname; /* Tree/mount name/path. */
42: uint32_t fid; /* Represents mount point. */
43: } p9_connection_t;
44:
45: typedef struct {
46: uint32_t fid; /* Identifies the file to P9 server. */
47: uint32_t iounit; /* Maximum read size in bytes. */
48: uint8_t type; /* Type of file. */
49: uint64_t length; /* Length of file. */
50: p9_connection_t *connection;
51: } p9_file_t;
52:
53:
54: void reset_buffers(void);
55: void p9_reg_transport(p9_transact_t transact_func, void *opaque,
56: uint8_t *tx_buffer, uint8_t *rx_buffer);
57: int p9_transaction(p9_connection_t *connection);
58: int p9_version(p9_connection_t *connection);
59: int p9_attach(p9_connection_t *connection);
60: int p9_clunk(p9_connection_t *connection, uint32_t fid);
61: int p9_walk(p9_connection_t *connection, uint32_t fid, uint32_t new_fid,
62: uint8_t **pos);
63: int p9_open(p9_file_t *file, uint8_t mode);
64: int p9_read(p9_file_t *file, uint8_t *buffer,
65: uint32_t count, uint64_t offset);
66: int p9_stat(p9_file_t *file);
67:
68: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.