]> git.proxmox.com Git - mirror_lxcfs.git/blame - bindings.h
Merge pull request #303 from yinhongbo/master
[mirror_lxcfs.git] / bindings.h
CommitLineData
3b5a3233
CB
1#ifndef __LXCFS_BINDINGS_H
2#define __LXCFS_BINDINGS_H
3
17e0e368 4#include "macro.h"
71f17cd2 5#include "sysfs_fuse.h"
17e0e368 6
237e200e 7/* directory under which we mount the controllers - /run/lxcfs/controllers */
cc97d34c 8#define BASEDIR RUNTIME_PATH "/lxcfs/controllers"
8cb31294 9#define ROOTDIR RUNTIME_PATH "/lxcfs/root"
237e200e 10
71f17cd2
YB
11/* Maximum number for 64 bit integer is a string with 21 digits: 2^64 - 1 = 21 */
12#define LXCFS_NUMSTRLEN64 21
13
14/* Reserve buffer size to account for file size changes. */
15#define BUF_RESERVE_SIZE 512
16
17enum lxcfs_virt_t {
18 LXC_TYPE_CGDIR,
19 LXC_TYPE_CGFILE,
20 LXC_TYPE_PROC_MEMINFO,
21 LXC_TYPE_PROC_CPUINFO,
22 LXC_TYPE_PROC_UPTIME,
23 LXC_TYPE_PROC_STAT,
24 LXC_TYPE_PROC_DISKSTATS,
25 LXC_TYPE_PROC_SWAPS,
26 LXC_TYPE_PROC_LOADAVG,
27 LXC_TYPE_SYS_DEVICES,
28 LXC_TYPE_SYS_DEVICES_SYSTEM,
29 LXC_TYPE_SYS_DEVICES_SYSTEM_CPU,
30 LXC_TYPE_SYS_DEVICES_SYSTEM_CPU_ONLINE,
31};
32
33struct file_info {
34 char *controller;
35 char *cgroup;
36 char *file;
37 int type;
38 char *buf; // unused as of yet
39 int buflen;
40 int size; //actual data size
41 int cached;
42};
43
7e60aa1b 44struct lxcfs_opts {
45 bool swap_off;
46};
47
237e200e
SH
48extern int cg_write(const char *path, const char *buf, size_t size, off_t offset,
49 struct fuse_file_info *fi);
50extern int cg_mkdir(const char *path, mode_t mode);
51extern int cg_chown(const char *path, uid_t uid, gid_t gid);
52extern int cg_rmdir(const char *path);
53extern int cg_chmod(const char *path, mode_t mode);
54extern int cg_readdir(const char *path, void *buf, fuse_fill_dir_t filler, off_t offset,
55 struct fuse_file_info *fi);
56extern int cg_releasedir(const char *path, struct fuse_file_info *fi);
57extern int cg_release(const char *path, struct fuse_file_info *fi);
58extern int cg_read(const char *path, char *buf, size_t size, off_t offset,
59 struct fuse_file_info *fi);
60extern int cg_opendir(const char *path, struct fuse_file_info *fi);
61extern int cg_getattr(const char *path, struct stat *sb);
62extern int cg_open(const char *path, struct fuse_file_info *fi);
bddbb106 63extern int cg_access(const char *path, int mode);
237e200e
SH
64
65extern int proc_getattr(const char *path, struct stat *sb);
66extern int proc_readdir(const char *path, void *buf, fuse_fill_dir_t filler, off_t offset,
67 struct fuse_file_info *fi);
68extern int proc_release(const char *path, struct fuse_file_info *fi);
69extern int proc_open(const char *path, struct fuse_file_info *fi);
70extern int proc_read(const char *path, char *buf, size_t size, off_t offset,
71 struct fuse_file_info *fi);
bddbb106 72extern int proc_access(const char *path, int mask);
6db4f7a3 73extern pthread_t load_daemon(int load_use);
a83618e2 74extern int stop_load_daemon(pthread_t pid);
3b5a3233 75
71f17cd2
YB
76extern pid_t lookup_initpid_in_store(pid_t qpid);
77extern char *get_pid_cgroup(pid_t pid, const char *contrl);
78extern int read_file(const char *path, char *buf, size_t size,
79 struct file_info *d);
80extern void prune_init_slice(char *cg);
81extern char *get_cpuset(const char *cg);
82extern bool use_cpuview(const char *cg);
83extern int max_cpu_count(const char *cg);
84extern void do_release_file_info(struct fuse_file_info *fi);
85
17e0e368 86#endif /* __LXCFS_BINDINGS_H */