| /****************************************************************************** |
| * Copyright (c) 2011 IBM Corporation |
| * All rights reserved. |
| * This program and the accompanying materials |
| * are made available under the terms of the BSD License |
| * which accompanies this distribution, and is available at |
| * http://www.opensource.org/licenses/bsd-license.php |
| * |
| * Contributors: |
| * IBM Corporation - initial implementation |
| *****************************************************************************/ |
| |
| #ifndef P9_H |
| #define P9_H |
| |
| #include <stdint.h> |
| |
| |
| #define P9_ERROR -1 |
| #define P9_UNKNOWN_VERSION -2 |
| #define P9_R_ERROR -3 |
| #define P9_MSG_TOO_LONG -4 |
| #define P9_UNEXPECTED_MSG -5 |
| #define P9_UNEXPECTED_TAG -6 |
| #define P9_TRANSPORT_ERROR -7 |
| #define P9_NO_TRANSPORT -8 |
| #define P9_NULL_PATH -9 |
| #define P9_PATH_ELEMENT_TOO_LONG -10 |
| #define P9_READ_UNEXPECTED_DATA -11 |
| #define P9_NO_BUFFER -12 |
| #define P9_MSG_SIZE_TOO_BIG -13 |
| |
| #define P9_PARTIAL_WALK 1 |
| |
| typedef int (*p9_transact_t)(void *opaque, uint8_t *tx, int tx_size, |
| uint8_t *rx, uint32_t *rx_size); |
| |
| typedef struct { |
| uint32_t message_size; |
| char *uname; /* User name. */ |
| char *aname; /* Tree/mount name/path. */ |
| uint32_t fid; /* Represents mount point. */ |
| } p9_connection_t; |
| |
| typedef struct { |
| uint32_t fid; /* Identifies the file to P9 server. */ |
| uint32_t iounit; /* Maximum read size in bytes. */ |
| uint8_t type; /* Type of file. */ |
| uint64_t length; /* Length of file. */ |
| p9_connection_t *connection; |
| } p9_file_t; |
| |
| |
| void reset_buffers(void); |
| void p9_reg_transport(p9_transact_t transact_func, void *opaque, |
| uint8_t *tx_buffer, uint8_t *rx_buffer); |
| int p9_transaction(p9_connection_t *connection); |
| int p9_version(p9_connection_t *connection); |
| int p9_attach(p9_connection_t *connection); |
| int p9_clunk(p9_connection_t *connection, uint32_t fid); |
| int p9_walk(p9_connection_t *connection, uint32_t fid, uint32_t new_fid, |
| uint8_t **pos); |
| int p9_open(p9_file_t *file, uint8_t mode); |
| int p9_read(p9_file_t *file, uint8_t *buffer, |
| uint32_t count, uint64_t offset); |
| int p9_stat(p9_file_t *file); |
| |
| #endif |