[kgtp] r955 committed - Adding actionx

  • From: kgtp@xxxxxxxxxxxxxx
  • To: kgtp@xxxxxxxxxxxxx
  • Date: Sun, 04 Mar 2012 06:34:39 +0000

Revision: 955
Author:   teawater
Date:     Sat Mar  3 22:34:21 2012
Log:      Adding actionx

http://code.google.com/p/kgtp/source/detail?r=955

Modified:
 /branches/actionx/gtp.c

=======================================
--- /branches/actionx/gtp.c     Sat Mar  3 21:22:07 2012
+++ /branches/actionx/gtp.c     Sat Mar  3 22:34:21 2012
@@ -2794,96 +2794,6 @@

        return 0;
 }
-
-#define gtp_action_x_getv                                              \
-       do {                                                            \
-               struct gtp_var  *tve;                                   \
-                                                                       \
-               tve = gtp_gtp_var_array_find(arg);                      \
-               if (!tve)                                               \
-                       goto code_error_out;                            \
-                                                                       \
-               stack[sp++] = top;                                      \
-                                                                       \
-               top = gtp_get_var(gts, tve);                            \
-       } while (0)
-
-#ifdef GTP_PERF_EVENTS
-#define gtp_action_x_setv_pe                                           \
-       do {                                                            \
-               if (tve->ptid == pe_tv_en)                           \
-                       gtp_pe_set_en(tve->pts, (int)top);           \
-               else if (tve->ptid == pe_tv_val)                     \
-                       gtp_perf_event_set(tve->pts->event, (u64)top);    \
-       } while (0)
-#else
-#define gtp_action_x_setv_pe
-#endif
-
-#define gtp_action_x_setv                              \
-       do {                                            \
-               struct gtp_var  *tve;                   \
-                                                       \
-               tve = gtp_gtp_var_array_find(arg);      \
-               if (!tve)                               \
-                       goto code_error_out;            \
-               gtp_action_x_setv_pe;                   \
-               tve->val = (uint64_t)top;            \
-       } while (0)
-
-#define gtp_action_x_tracev                                            \
-       do {                                                            \
-               if (!gts->tpe->have_printk) {                             \
-                       struct gtp_var  *tve;                           \
-                                                                       \
-                       tve = gtp_gtp_var_array_find(arg);              \
-                       if (!tve)                                       \
-                               goto code_error_out;                    \
-                                                                       \
-                       if (gtp_collect_var(gts, tve)) {                \
-                               /* gtp_collect_var will set error       \
-                                  status with itself if it got         \
-                                  error. */                            \
-                               goto out;                               \
-                       }                                               \
-               }                                                       \
-       } while (0)
-
-#define gtp_action_x_tracev_printk                                     \
-       do {                                                            \
-               struct gtp_var  *tve;                                   \
-                                                                       \
-               tve = gtp_gtp_var_array_find(arg);                      \
-               if (!tve)                                               \
-                       goto code_error_out;                            \
-                                                                       \
-               if (gtp_action_printk(gts, gtp_get_var(gts, tve), 0)) { \
-                       /* gtp_collect_var will set error status with   \
-                          itself if it got error. */                   \
-                       goto out;                                       \
-               }                                                       \
-       } while (0)
-
-#define gtp_action_x_printf                                            \
-       do {                                                            \
-               if (strstr((char *)(ebuf + pc), "%s")) {              \
-                       int     i;                                      \
-                       char    buf[50];                                \
-                                                                       \
-                       for (i = 0; i < 50; i++) {                   \
-                               if (probe_kernel_read(buf + i,          \
-                                                     argv + i, 1))     \
-                                       goto code_error_out;            \
-                               if (!buf[i])                            \
-                                       break;                          \
-                       }                                               \
-                       snprintf(pbuf, psize, (char *)(ebuf + pc),      \
-                                buf);                                  \
-               } else {                                                \
-                       snprintf(pbuf, psize, (char *)(ebuf + pc),      \
-                                argv);                                 \
-               }                                                       \
-       } while (0)

 #define STACK_MAX      32
 static DEFINE_PER_CPU(ULONGEST[STACK_MAX], action_x_stack);
@@ -3326,10 +3236,19 @@
                                goto code_error_out;
                        break;
                /* getv */
-               case 0x2c:
-                       arg = ebuf[pc++];
-                       arg = (arg << 8) + ebuf[pc++];
-                       gtp_action_x_getv;
+               case 0x2c: {
+                               struct gtp_var  *tve;
+
+                               arg = ebuf[pc++];
+                               arg = (arg << 8) + ebuf[pc++];
+
+                               tve = gtp_gtp_var_array_find(arg);
+                               if (!tve)
+                                       goto code_error_out;
+                               stack[sp++] = top;
+
+                               top = gtp_get_var(gts, tve);
+                       }
                        break;
                /* getv_sepecial */
                case op_special_getv:
@@ -3339,10 +3258,24 @@
                        top = gtp_get_var_special(gts, arg);
                        break;
                /* setv */
-               case 0x2d:
-                       arg = ebuf[pc++];
-                       arg = (arg << 8) + ebuf[pc++];
-                       gtp_action_x_setv;
+               case 0x2d: {
+                               struct gtp_var  *tve;
+
+                               arg = ebuf[pc++];
+                               arg = (arg << 8) + ebuf[pc++];
+
+                               tve = gtp_gtp_var_array_find(arg);
+                               if (!tve)
+                                       goto code_error_out;
+#ifdef GTP_PERF_EVENTS
+                               if (tve->ptid == pe_tv_en)
+                                       gtp_pe_set_en(tve->pts, (int)top);
+                               else if (tve->ptid == pe_tv_val)
+                                       gtp_perf_event_set(tve->pts->event,
+                                                          (u64)top);
+#endif
+                               tve->val = (uint64_t)top;
+                       }
                        break;
                /* setv_sepecial */
                case op_special_setv:
@@ -3354,7 +3287,21 @@
                case 0x2e:
                        arg = ebuf[pc++];
                        arg = (arg << 8) + ebuf[pc++];
-                       gtp_action_x_tracev;
+
+                       if (!gts->tpe->have_printk) {
+                               struct gtp_var  *tve;
+
+                               tve = gtp_gtp_var_array_find(arg);
+                               if (!tve)
+                                       goto code_error_out;
+
+                               if (gtp_collect_var(gts, tve)) {
+                                       /* gtp_collect_var will set error
+                                          status with itself if it got
+                                          error. */
+                                       goto out;
+                               }
+                       }
                        break;
                /* tracev_special */
                case op_special_tracev:
@@ -3363,10 +3310,24 @@
                        gtp_collect_var_special(gts, arg);
                        break;
                /* tracev_printk */
-               case op_tracev_printk:
-                       arg = ebuf[pc++];
-                       arg = (arg << 8) + ebuf[pc++];
-                       gtp_action_x_tracev_printk;
+               case op_tracev_printk: {
+                               struct gtp_var  *tve;
+
+                               arg = ebuf[pc++];
+                               arg = (arg << 8) + ebuf[pc++];
+
+                               tve = gtp_gtp_var_array_find(arg);
+                               if (!tve)
+                                       goto code_error_out;
+
+                               if (gtp_action_printk(gts,
+                                                     gtp_get_var(gts, tve),
+                                                     0)) {
+                                       /* gtp_collect_var will set error status
+                                          with itself if it got error. */
+                                       goto out;
+                               }
+                       }
                        break;
                /* printf */
                case 0x31: {
@@ -3380,7 +3341,23 @@
                                        /* pop */
                                        top = stack[--sp];

-                                       gtp_action_x_printf;
+                                       if (strstr((char *)(ebuf + pc), "%s")) {
+                                               int     i;
+                                               char    buf[50];
+
+                                               for (i = 0; i < 50; i++) {
+                                                       if 
(probe_kernel_read(buf + i,
+                                                                       argv + 
i, 1))
+                                                               goto 
code_error_out;
+                                                       if (!buf[i])
+                                                               break;
+                                               }
+                                               snprintf(pbuf, psize, (char 
*)(ebuf + pc),
+                                                       buf);
+                                       } else {
+                                               snprintf(pbuf, psize, (char 
*)(ebuf + pc),
+                                                       argv);
+                                       }
                                } else
                                        snprintf(pbuf, psize,
                                                        (char *)(ebuf + pc));

Other related posts:

  • » [kgtp] r955 committed - Adding actionx - kgtp