|
|
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.