晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/usr/include/lve/ |
| Current File : //usr/include/lve/lve-type.h |
#ifndef _LVE_TYPE_H_
#define _LVE_TYPE_H_
#include <unistd.h>
#include <stdint.h>
#include <stdbool.h>
enum liblve_enter_flags {
LVE_NO_UBC = 1 << 0,
LVE_NO_NAMESPACE = 1 << 1,
LVE_NO_MAXENTER = 1 << 2,
LVE_SILENCE = 1 << 3,
LVE_NO_KILLABLE = 1 << 4,
LVE_NO_CPU = 1 << 5,
LVE_NO_FREEZER = 1 << 6,
};
enum liblve_ve_flags {
LVE_VE_DISABLE = 1 << 0, /* disable to enter to that ve */
};
enum liblve_ve_fails {
LVE_FAIL_MEM = 1 << 0, /**< memory limit reached */
LVE_FAIL_MEM_PHY = 1 << 1, /**< physical memory limit reached */
LVE_FAIL_NPROC = 1 << 2, /**< number of processes limit reached */
};
enum liblve_global_params {
LVEGP_SYMLINK_PROTECTION = 1,
LVEGP_HARDLINK_PROTECTION,
LVEGP_HANDLE_SYMLINK_OWNER,
LVEGP_SYMLINK_OWNER_GID,
LVEGP_SYMLINK_PROT_ALLOW_GID,
LVEGP_HARDLINK_PROT_ALLOW_GID,
LVEGP_GLOBAL_NONROOT,
LVEGP_XFS_QUOTA_CAP_RES_BYPASS,
LVEGP_PROC_CAN_SEE_OTHER_UID,
LVEGP_PROC_SUPER_GID,
LVEGP_PTRACE_ENABLED,
LVEGP_PTRACE_SELF_ENABLED,
LVEGP_GRACE_PERIOD = 125,
};
/**
* Flag indicating that ls_cpu stores hi resolution limit, used only for
* lve_setup_enter.
*/
#define LIBLVE_SETTINGS_LS_CPU_HIRES (1<<31)
struct liblve_settings {
int32_t ls_cpu; /** < cpu power aka rate */
int32_t ls_cpus; /** < number vcpus */
int32_t ls_io; /** < io limit */
int32_t ls_enters; /** < enter limit */
int32_t ls_memory; /** < mem limit */
int32_t ls_cpu_weight;
int32_t ls_memory_phy; /** < phy mem limit */
int32_t ls_nproc; /* number processes */
int32_t ls_iops; /* number of iops */
};
struct liblve_info {
struct liblve_settings li_set; /* if it's put on top we have binary
compatible with old versions */
enum liblve_ve_flags li_flags;
};
struct liblve_pid_info {
uint32_t id; /* lve id of the task */
uint32_t flags; /* flags task entered lve with */
bool leader; /* is lve leader */
};
struct liblve_net_port {
uint16_t port; /* port, 0 - change a lve policy itself */
bool permit; /* permit/forbid port binding */
};
struct liblve_net_limits {
uint64_t in_lim; /* input trafic limit */
uint64_t out_lim; /* output trafic limit */
};
enum liblve_freezer_ops {
LVE_FREEZER_FREEZE,
LVE_FREEZER_THAW,
};
struct liblve_freezer_control {
uint16_t op;
};
enum lvp_set_type {
LVP_SETUP_SELF,
LVP_SETUP_DEFAULT,
};
typedef void *(*liblve_alloc)(size_t size);
typedef void (*liblve_free)(void *ptr);
enum jail_flags {
JAIL_DROP_CAPS = 1 << 0,
JAIL_NO_NEW_PRIVS = 1 << 1,
};
#endif
|