blob: 726063c1a3b8ac99694451565cd8d906c6a2e679 [file] [log] [blame]
/*
* Copyright (C) 2002 Jeff Dike (jdike@karaya.com)
* Licensed under the GPL
*/
#ifndef __OS_H__
#define __OS_H__
#include "asm/types.h"
#include "../os/include/file.h"
struct openflags {
unsigned int r : 1;
unsigned int w : 1;
unsigned int s : 1; /* O_SYNC */
unsigned int c : 1; /* O_CREAT */
unsigned int t : 1; /* O_TRUNC */
unsigned int a : 1; /* O_APPEND */
unsigned int e : 1; /* O_EXCL */
};
#define OPENFLAGS() ((struct openflags) { r : 0, w : 0, c : 0, s : 0 })
static inline struct openflags of_read(struct openflags flags){
flags.r = 1;
return(flags);
}
static inline struct openflags of_write(struct openflags flags){
flags.w = 1;
return(flags);
}
static inline struct openflags of_rdwr(struct openflags flags){
return(of_read(of_write(flags)));
}
static inline struct openflags of_set_rw(struct openflags flags, int r, int w){
flags.r = r;
flags.w = w;
return(flags);
}
static inline struct openflags of_sync(struct openflags flags){
flags.s = 1;
return(flags);
}
static inline struct openflags of_create(struct openflags flags){
flags.c = 1;
return(flags);
}
static inline struct openflags of_trunc(struct openflags flags){
flags.t = 1;
return(flags);
}
static inline struct openflags of_append(struct openflags flags){
flags.a = 1;
return(flags);
}
static inline struct openflags of_excl(struct openflags flags){
flags.e = 1;
return(flags);
}
extern int os_seek_file(int fd, __u64 offset);
extern int os_open_file(char *file, struct openflags flags, int mode);
extern int os_file_size(char *file, long long *size_out);
extern int os_pipe(int *fd, int stream);
extern int os_set_fd_async(int fd, int owner);
extern int os_set_fd_block(int fd, int blocking);
extern int os_accept_connection(int fd);
extern void os_shutdown_socket(int fd);
extern void os_close_file(int fd);
extern int os_rcv_fd(int fd, int *helper_pid_out);
extern int create_unix_socket(char *file, int len);
extern unsigned long os_process_pc(int pid);
extern int os_process_parent(int pid);
extern void os_stop_process(int pid);
extern void os_kill_process(int pid);
extern void os_usr1_process(int pid);
extern int os_getpid(void);
#endif
/*
* Overrides for Emacs so that we follow Linus's tabbing style.
* Emacs will notice this stuff at the end of the file and automatically
* adjust the settings for this buffer only. This must remain at the end
* of the file.
* ---------------------------------------------------------------------------
* Local variables:
* c-file-style: "linux"
* End:
*/