Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

69 lines (62 sloc) 2.379 kb
/*
* pseudo_ipc.h, definitions and declarations for pseudo IPC code
*
* Copyright (c) 2008-2010 Wind River Systems, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the Lesser GNU General Public License version 2.1 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the Lesser GNU General Public License for more details.
*
* You should have received a copy of the Lesser GNU General Public License
* version 2.1 along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
/* The [] item at the end of the struct is a C99 feature, replacing the
* old (and unportable) "struct hack".
*/
typedef struct {
pseudo_msg_type_t type;
pseudo_op_t op;
pseudo_res_t result;
int access;
int client;
int fd;
dev_t dev;
unsigned long long ino;
uid_t uid;
gid_t gid;
unsigned long long mode;
dev_t rdev;
unsigned int pathlen;
int nlink;
int deleting;
char path[];
} pseudo_msg_t;
enum {
PSA_EXEC = 1,
PSA_WRITE = (PSA_EXEC << 1),
PSA_READ = (PSA_WRITE << 1),
PSA_APPEND = (PSA_READ << 1),
} pseudo_access_t;
#define PSEUDO_ACCESS_MAP(mode, fcntl_access, pseudo_access) ((((mode) & O_ACCMODE) == (fcntl_access)) ? (pseudo_access) : (0))
#define PSEUDO_ACCESS_FLAG(mode, fcntl_access, pseudo_access) (((mode) & (fcntl_access)) ? (pseudo_access) : (0))
#define PSEUDO_ACCESS(mode) ( \
PSEUDO_ACCESS_MAP(mode, O_RDONLY, PSA_READ) | \
PSEUDO_ACCESS_MAP(mode, O_WRONLY, PSA_WRITE) | \
PSEUDO_ACCESS_MAP(mode, O_RDWR, PSA_READ | PSA_WRITE) | \
PSEUDO_ACCESS_FLAG(mode, O_APPEND, PSA_APPEND))
extern int pseudo_access_fopen(const char *);
#define PSEUDO_HEADER_SIZE (offsetof(pseudo_msg_t, path))
extern pseudo_msg_t *pseudo_msg_receive(int fd);
extern pseudo_msg_t *pseudo_msg_dup(pseudo_msg_t *);
extern pseudo_msg_t *pseudo_msg_dupheader(pseudo_msg_t *);
extern pseudo_msg_t *pseudo_msg_new(size_t, const char *);
extern int pseudo_msg_send(int fd, pseudo_msg_t *, size_t, const char *);
void pseudo_msg_stat(pseudo_msg_t *msg, const PSEUDO_STATBUF *buf);
void pseudo_stat_msg(PSEUDO_STATBUF *buf, const pseudo_msg_t *msg);
Jump to Line
Something went wrong with that request. Please try again.