68 lines
2 KiB
C
68 lines
2 KiB
C
/******************************************************************************
|
|
* 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
|