This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH tracing/kprobes v3 3/7] tracing/kprobes: Rename special variables


Frederic Weisbecker wrote:
On Mon, Oct 12, 2009 at 05:20:09PM -0400, Masami Hiramatsu wrote:
Masami Hiramatsu wrote:
@@ -427,28 +427,17 @@ static int parse_probe_vars(char *arg, struct fetch_func *ff, int is_return)
   	int ret = 0;
   	unsigned long param;

-	switch (arg[0]) {
-	case 'a':	/* argument */
-		ret = strict_strtoul(arg + 1, 10,&param);
-		if (ret || param>   PARAM_MAX_ARGS)
-			ret = -EINVAL;
-		else {
-			ff->func = fetch_argument;
-			ff->data = (void *)param;
-		}
-		break;
-	case 'r':	/* retval or retaddr */
-		if (is_return&&   arg[1] == 'v') {
+	if (strcmp(arg, "retval") == 0) {
+		if (is_return) {
   			ff->func = fetch_retvalue;
   			ff->data = NULL;
   		} else
   			ret = -EINVAL;
-		break;
-	case 's':	/* stack */
-		if (arg[1] == 'a') {
+	} else if (strncmp(arg, "stack", 5) == 0) {
+		if (arg[5] == '\0') {
   			ff->func = fetch_stack_address;
   			ff->data = NULL;
-		} else {
+		} else if (isdigit(arg[5])) {
   			ret = strict_strtoul(arg + 1, 10,&param);
^^^^^^^ this should be arg + 5.

@@ -456,11 +445,18 @@ static int parse_probe_vars(char *arg, struct fetch_func *ff, int is_return)
   				ff->func = fetch_stack;
   				ff->data = (void *)param;
   			}
+		} else
+			ret = -EINVAL;
+	} else if (strncmp(arg, "arg", 3) == 0&&   isdigit(arg[4])) {



And this should be isdigit(arg[3]) actually, what you want to test is the first character after arg, right?

Right. I'll fix it...



Thank you,


--
Masami Hiramatsu

Software Engineer
Hitachi Computer Products (America), Inc.
Software Solutions Division

e-mail: mhiramat@redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]