X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lttng-abi.c;fp=lttng-abi.c;h=dc8b92365fa0067d6e307eeb684fd2d5f8f2a9ef;hb=5cc652a694c9d81ab379d57b2bc4bb2c3e851225;hp=b9c173219d96db1b993e2f6c6c2a5d9bb4e9ab87;hpb=fd50647598e11d8370f244e255d90093aad8e4c1;p=deliverable%2Flttng-modules.git diff --git a/lttng-abi.c b/lttng-abi.c index b9c17321..dc8b9236 100644 --- a/lttng-abi.c +++ b/lttng-abi.c @@ -508,6 +508,23 @@ int lttng_abi_session_set_name(struct lttng_session *session, return 0; } +static +int lttng_abi_session_set_creation_time(struct lttng_session *session, + struct lttng_kernel_session_creation_time *time) +{ + size_t len; + + len = strnlen(time->iso8601, LTTNG_KERNEL_SESSION_CREATION_TIME_ISO8601_LEN); + + if (len == LTTNG_KERNEL_SESSION_CREATION_TIME_ISO8601_LEN) { + /* Time is too long/malformed */ + return -EINVAL; + } + + strcpy(session->creation_time, time->iso8601); + return 0; +} + /** * lttng_session_ioctl - lttng session fd ioctl * @@ -627,6 +644,16 @@ long lttng_session_ioctl(struct file *file, unsigned int cmd, unsigned long arg) return -EFAULT; return lttng_abi_session_set_name(session, &name); } + case LTTNG_KERNEL_SESSION_SET_CREATION_TIME: + { + struct lttng_kernel_session_creation_time time; + + if (copy_from_user(&time, + (struct lttng_kernel_session_creation_time __user *) arg, + sizeof(struct lttng_kernel_session_creation_time))) + return -EFAULT; + return lttng_abi_session_set_creation_time(session, &time); + } default: return -ENOIOCTLCMD; }