commands: pass around intmax_t

parent d3e91192
...@@ -375,12 +375,13 @@ int lxc_try_cmd(const char *name, const char *lxcpath) ...@@ -375,12 +375,13 @@ int lxc_try_cmd(const char *name, const char *lxcpath)
pid_t lxc_cmd_get_init_pid(const char *name, const char *lxcpath) pid_t lxc_cmd_get_init_pid(const char *name, const char *lxcpath)
{ {
int ret, stopped; int ret, stopped;
intmax_t pid;
struct lxc_cmd_rr cmd = { struct lxc_cmd_rr cmd = {
.req = { .req = {
.cmd = LXC_CMD_GET_INIT_PID .cmd = LXC_CMD_GET_INIT_PID
}, },
.rsp = { .rsp = {
.data = INT_TO_PTR((int){-1}) .data = INTMAX_TO_PTR((intmax_t){-1})
} }
}; };
...@@ -388,13 +389,22 @@ pid_t lxc_cmd_get_init_pid(const char *name, const char *lxcpath) ...@@ -388,13 +389,22 @@ pid_t lxc_cmd_get_init_pid(const char *name, const char *lxcpath)
if (ret < 0) if (ret < 0)
return -1; return -1;
return PTR_TO_INT(cmd.rsp.data); pid = PTR_TO_INTMAX(cmd.rsp.data);
if (pid < 0)
return -1;
/* We need to assume that pid_t can actually hold any pid given to us
* by the kernel. If it can't it's a libc bug.
*/
return (pid_t)pid;
} }
static int lxc_cmd_get_init_pid_callback(int fd, struct lxc_cmd_req *req, static int lxc_cmd_get_init_pid_callback(int fd, struct lxc_cmd_req *req,
struct lxc_handler *handler) struct lxc_handler *handler)
{ {
struct lxc_cmd_rsp rsp = { .data = INT_TO_PTR(handler->pid) }; struct lxc_cmd_rsp rsp = {
.data = INTMAX_TO_PTR(handler->pid)
};
return lxc_cmd_rsp_send(fd, &rsp); return lxc_cmd_rsp_send(fd, &rsp);
} }
......
...@@ -312,4 +312,7 @@ extern int __build_bug_on_failed; ...@@ -312,4 +312,7 @@ extern int __build_bug_on_failed;
#define PTR_TO_INT(p) ((int)((intptr_t)(p))) #define PTR_TO_INT(p) ((int)((intptr_t)(p)))
#define INT_TO_PTR(u) ((void *)((intptr_t)(u))) #define INT_TO_PTR(u) ((void *)((intptr_t)(u)))
#define PTR_TO_INTMAX(p) ((intmax_t)((intptr_t)(p)))
#define INTMAX_TO_PTR(u) ((void *)((intptr_t)(u)))
#endif /* __LXC_MACRO_H */ #endif /* __LXC_MACRO_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment