Module: xenomai-forge
Branch: next
Commit: 17d98c20dad5240023a8a4c82e3ec2430fd6b745
URL:    
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=17d98c20dad5240023a8a4c82e3ec2430fd6b745

Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org>
Date:   Sat Feb  1 20:22:27 2014 +0100

drivers/testing: adapt timerbench after RTDM changes

---

 kernel/drivers/testing/timerbench.c |   89 +++++++++++++++--------------------
 1 file changed, 39 insertions(+), 50 deletions(-)

diff --git a/kernel/drivers/testing/timerbench.c 
b/kernel/drivers/testing/timerbench.c
index af75d56..4cf6c44 100644
--- a/kernel/drivers/testing/timerbench.c
+++ b/kernel/drivers/testing/timerbench.c
@@ -186,12 +186,11 @@ static void timer_proc(rtdm_timer_t *timer)
        } while (err);
 }
 
-static int rt_tmbench_open(struct rtdm_dev_context *context,
-                          rtdm_user_info_t *user_info, int oflags)
+static int rt_tmbench_open(struct rtdm_fd *context, int oflags)
 {
        struct rt_tmbench_context *ctx;
 
-       ctx = (struct rt_tmbench_context *)context->dev_private;
+       ctx = rtdm_context_to_private(context);
 
        ctx->mode = RTTST_TMBENCH_INVALID;
        sema_init(&ctx->nrt_mutex, 1);
@@ -199,12 +198,11 @@ static int rt_tmbench_open(struct rtdm_dev_context 
*context,
        return 0;
 }
 
-static int rt_tmbench_close(struct rtdm_dev_context *context,
-                           rtdm_user_info_t *user_info)
+static void rt_tmbench_close(struct rtdm_fd *context)
 {
        struct rt_tmbench_context *ctx;
 
-       ctx = (struct rt_tmbench_context *)context->dev_private;
+       ctx = rtdm_context_to_private(context);
 
        down(&ctx->nrt_mutex);
 
@@ -224,13 +222,10 @@ static int rt_tmbench_close(struct rtdm_dev_context 
*context,
        }
 
        up(&ctx->nrt_mutex);
-
-       return 0;
 }
 
-static int rt_tmbench_start(struct rtdm_dev_context *context,
+static int rt_tmbench_start(struct rtdm_fd *context,
                            struct rt_tmbench_context *ctx,
-                           rtdm_user_info_t *user_info,
                            struct rttst_tmbench_config __user *user_config)
 {
        int err = 0;
@@ -240,9 +235,9 @@ static int rt_tmbench_start(struct rtdm_dev_context 
*context,
        struct rttst_tmbench_config *config =
                (struct rttst_tmbench_config *)user_config;
 
-       if (user_info) {
+       if (rtdm_context_user_p(context)) {
                if (rtdm_safe_copy_from_user
-                   (user_info, &config_buf,user_config,
+                   (context, &config_buf,user_config,
                     sizeof(struct rttst_tmbench_config)) < 0)
                        return -EFAULT;
 
@@ -293,32 +288,28 @@ static int rt_tmbench_start(struct rtdm_dev_context 
*context,
        rtdm_event_init(&ctx->result_event, 0);
 
        if (config->mode == RTTST_TMBENCH_TASK) {
-               if (!test_bit(RTDM_CLOSING, &context->context_flags)) {
-                       err = rtdm_task_init(&ctx->timer_task, "timerbench",
-                                            timer_task_proc, ctx,
-                                            config->priority, 0);
-                       if (!err)
-                               ctx->mode = RTTST_TMBENCH_TASK;
-               }
+               err = rtdm_task_init(&ctx->timer_task, "timerbench",
+                               timer_task_proc, ctx,
+                               config->priority, 0);
+               if (!err)
+                       ctx->mode = RTTST_TMBENCH_TASK;
        } else {
                rtdm_timer_init(&ctx->timer, timer_proc,
-                               context->device->device_name);
+                               rtdm_context_device(context)->device_name);
 
                ctx->curr.test_loops = 0;
 
-               if (!test_bit(RTDM_CLOSING, &context->context_flags)) {
-                       ctx->mode = RTTST_TMBENCH_HANDLER;
+               ctx->mode = RTTST_TMBENCH_HANDLER;
 
-                       cobalt_atomic_enter(s);
-                       ctx->start_time = rtdm_clock_read_monotonic();
+               cobalt_atomic_enter(s);
+               ctx->start_time = rtdm_clock_read_monotonic();
 
-                       /* first event: one millisecond from now. */
-                       ctx->date = ctx->start_time + 1000000;
+               /* first event: one millisecond from now. */
+               ctx->date = ctx->start_time + 1000000;
 
-                       err = rtdm_timer_start(&ctx->timer, ctx->date, 0,
-                                              RTDM_TIMERMODE_ABSOLUTE);
-                       cobalt_atomic_leave(s);
-               }
+               err = rtdm_timer_start(&ctx->timer, ctx->date, 0,
+                               RTDM_TIMERMODE_ABSOLUTE);
+               cobalt_atomic_leave(s);
        }
 
        up(&ctx->nrt_mutex);
@@ -327,9 +318,9 @@ static int rt_tmbench_start(struct rtdm_dev_context 
*context,
 }
 
 static int rt_tmbench_stop(struct rt_tmbench_context *ctx,
-                          rtdm_user_info_t *user_info,
                           struct rttst_overall_bench_res __user *user_res)
 {
+       struct rtdm_fd *context = rtdm_private_to_context(ctx);
        int err = 0;
 
        down(&ctx->nrt_mutex);
@@ -353,8 +344,8 @@ static int rt_tmbench_stop(struct rt_tmbench_context *ctx,
                   ((ctx->result.overall.test_loops) > 1 ?
                    ctx->result.overall.test_loops : 2) - 1);
 
-       if (user_info)
-               err = rtdm_safe_copy_to_user(user_info, &user_res->result,
+       if (rtdm_context_user_p(context))
+               err = rtdm_safe_copy_to_user(context, &user_res->result,
                                             &ctx->result.overall,
                                             sizeof(struct rttst_bench_res));
                /* Do not break on error here - we may have to free a
@@ -370,19 +361,19 @@ static int rt_tmbench_stop(struct rt_tmbench_context *ctx,
        if (ctx->histogram_size > 0) {
                int size = ctx->histogram_size * sizeof(long);
 
-               if (user_info) {
+               if (rtdm_context_user_p(context)) {
                        struct rttst_overall_bench_res res_buf;
 
-                       if (rtdm_safe_copy_from_user(user_info,
+                       if (rtdm_safe_copy_from_user(context,
                                                     &res_buf, user_res,
                                                     sizeof(res_buf)) < 0 ||
-                           rtdm_safe_copy_to_user(user_info,
+                           rtdm_safe_copy_to_user(context,
                                    (void __user *)res_buf.histogram_min,
                                    ctx->histogram_min, size) < 0 ||
-                           rtdm_safe_copy_to_user(user_info,
+                           rtdm_safe_copy_to_user(context,
                                    (void __user *)res_buf.histogram_max,
                                    ctx->histogram_max, size) < 0 ||
-                           rtdm_safe_copy_to_user(user_info,
+                           rtdm_safe_copy_to_user(context,
                                    (void __user *)res_buf.histogram_avg,
                                    ctx->histogram_avg, size) < 0)
                                err = -EFAULT;
@@ -403,22 +394,21 @@ static int rt_tmbench_stop(struct rt_tmbench_context *ctx,
        return err;
 }
 
-static int rt_tmbench_ioctl_nrt(struct rtdm_dev_context *context,
-                               rtdm_user_info_t *user_info,
+static int rt_tmbench_ioctl_nrt(struct rtdm_fd *context,
                                unsigned int request, void __user *arg)
 {
        struct rt_tmbench_context *ctx;
        int err = 0;
 
-       ctx = (struct rt_tmbench_context *)context->dev_private;
+       ctx = rtdm_context_to_private(context);
 
        switch (request) {
        case RTTST_RTIOC_TMBENCH_START:
-               err = rt_tmbench_start(context, ctx, user_info, arg);
+               err = rt_tmbench_start(context, ctx, arg);
                break;
 
        case RTTST_RTIOC_TMBENCH_STOP:
-               err = rt_tmbench_stop(ctx, user_info, arg);
+               err = rt_tmbench_stop(ctx, arg);
                break;
 
        case RTTST_RTIOC_INTERM_BENCH_RES:
@@ -432,14 +422,13 @@ static int rt_tmbench_ioctl_nrt(struct rtdm_dev_context 
*context,
        return err;
 }
 
-static int rt_tmbench_ioctl_rt(struct rtdm_dev_context *context,
-                              rtdm_user_info_t *user_info,
+static int rt_tmbench_ioctl_rt(struct rtdm_fd *context,
                               unsigned int request, void __user *arg)
 {
        struct rt_tmbench_context *ctx;
        int err = 0;
 
-       ctx = (struct rt_tmbench_context *)context->dev_private;
+       ctx = rtdm_context_to_private(context);
 
        switch (request) {
        case RTTST_RTIOC_INTERM_BENCH_RES:
@@ -447,10 +436,10 @@ static int rt_tmbench_ioctl_rt(struct rtdm_dev_context 
*context,
                if (err)
                        return err;
 
-               if (user_info) {
+               if (rtdm_context_user_p(context)) {
                        struct rttst_interm_bench_res __user *user_res = arg;
 
-                       err = rtdm_safe_copy_to_user(user_info, user_res,
+                       err = rtdm_safe_copy_to_user(context, user_res,
                                                     &ctx->result,
                                                     sizeof(*user_res));
                } else {
@@ -480,10 +469,10 @@ static struct rtdm_device device = {
        .context_size           = sizeof(struct rt_tmbench_context),
        .device_name            = "",
 
-       .open_nrt               = rt_tmbench_open,
+       .open                   = rt_tmbench_open,
 
        .ops = {
-               .close_nrt      = rt_tmbench_close,
+               .close          = rt_tmbench_close,
 
                .ioctl_rt       = rt_tmbench_ioctl_rt,
                .ioctl_nrt      = rt_tmbench_ioctl_nrt,


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git

Reply via email to