static inline ALWAYSINLINE int
vc_add_dlimit_v13(char const *filename, xid_t xid, uint32_t flags)
{
- struct vcmd_ctx_dlimit_base_v0 init;
+ struct vcmd_ctx_dlimit_base_v0 init = {
+ .name = filename,
+ .flags = flags
+ };
- memset(&init, 0, sizeof(init));
- init.name = filename;
- init.flags = flags;
return vserver(VCMD_add_dlimit, CTX_USER2KERNEL(xid), &init);
}
static inline ALWAYSINLINE int
vc_rem_dlimit_v13(char const *filename, xid_t xid, uint32_t flags)
{
- struct vcmd_ctx_dlimit_base_v0 init;
+ struct vcmd_ctx_dlimit_base_v0 init = {
+ .name = filename,
+ .flags = flags
+ };
- memset(&init, 0, sizeof(init));
- init.name = filename;
- init.flags = flags;
return vserver(VCMD_rem_dlimit, CTX_USER2KERNEL(xid), &init);
}
(X)==VC_CDLIM_INFINITY ? CDLIM_INFINITY : \
(X)==VC_CDLIM_KEEP ? CDLIM_KEEP : \
(X))
-#define CDLIM_KERNEL2USER(X) ((X)==CDLIM_UNSET ? VC_CDLIM_UNSET : \
- (X)==CDLIM_INFINITY ? VC_CDLIM_INFINITY : \
- (X)==CDLIM_KEEP ? VC_CDLIM_KEEP : \
+
+ /// the __typeof__ thing is a hack to deal with the kernel interface
+ /// using an unsigned long long value for a uint32_t type
+#define CDLIM_KERNEL2USER(X) ((X)==(__typeof__(X))CDLIM_UNSET ? VC_CDLIM_UNSET : \
+ (X)==(__typeof__(X))CDLIM_INFINITY ? VC_CDLIM_INFINITY : \
+ (X)==(__typeof__(X))CDLIM_KEEP ? VC_CDLIM_KEEP : \
(X))