>Number:         156130
>Category:       kern
>Synopsis:       hints read: resource_longlong_value and resource_uintmax_value
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Sat Apr 02 18:50:10 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Rozhuk Ivan
>Release:        8.2-STABLE
>Organization:
>Environment:
FreeBSD firewall 8.2-STABLE FreeBSD 8.2-STABLE #4: Sun Mar 13 02:12:50 IRKT 
2011     root@firewall:/usr/obj/usr/src/sys/RIMx64  amd64

>Description:
just additional functions for hints:
resource_longlong_value
resource_uintmax_value
>How-To-Repeat:
try to read from "hints" 64 bit values in your driver/module
>Fix:
apply patch :)

Patch attached with submission follows:

--- /usr/src/sys/kern/subr_hints_orig.c 2009-08-03 17:13:06.000000000 +0900
+++ /usr/src/sys/kern/subr_hints.c      2011-04-03 02:28:25.000000000 +0900
@@ -273,6 +273,53 @@ resource_long_value(const char *name, in
        return 0;
 }
 
+
+int
+resource_longlong_value(const char *name, int unit, const char *resname, 
unsigned long long *result)
+{
+       int error;
+       const char *str;
+       char *op;
+       unsigned long val;
+       int line;
+
+       line = 0;
+       error = resource_find(&line, NULL, name, &unit, resname, NULL,
+           NULL, NULL, NULL, NULL, NULL, &str);
+       if (error)
+               return error;
+       if (*str == '\0') 
+               return EFTYPE;
+       val = strtoull(str, &op, 0);
+       if (*op != '\0') 
+               return EFTYPE;
+       *result = val;
+       return 0;
+}
+
+int
+resource_uintmax_value(const char *name, int unit, const char *resname, 
uintmax_t *result)
+{
+       int error;
+       const char *str;
+       char *op;
+       unsigned long val;
+       int line;
+
+       line = 0;
+       error = resource_find(&line, NULL, name, &unit, resname, NULL,
+           NULL, NULL, NULL, NULL, NULL, &str);
+       if (error)
+               return error;
+       if (*str == '\0') 
+               return EFTYPE;
+       val = strtoumax(str, &op, 0);
+       if (*op != '\0') 
+               return EFTYPE;
+       *result = val;
+       return 0;
+}
+
 int
 resource_string_value(const char *name, int unit, const char *resname,
     const char **result)


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to