grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [patch] fixes for kernel of FreeBSD


From: Robert Millan
Subject: Re: [patch] fixes for kernel of FreeBSD
Date: Fri, 21 Apr 2006 14:33:22 +0200
User-agent: Mutt/1.5.11+cvs20060403

Followup to my previous sysctl commit.  When modifying kern.geom.debugflags is
not necessary, this avoids the third sysctlbyname() call (and allocating "flags"
into the stack ;)).

2006-04-21  Robert Millan  <address@hidden>

        * grub/asmstub.c (get_diskinfo): Optimize sysctl routine.

Index: grub/asmstub.c
===================================================================
RCS file: /sources/grub/grub/grub/asmstub.c,v
retrieving revision 1.85
diff -u -r1.85 asmstub.c
--- grub/asmstub.c      20 Apr 2006 13:46:45 -0000      1.85
+++ grub/asmstub.c      21 Apr 2006 12:28:17 -0000
@@ -785,7 +785,7 @@
 /* By default, kernel of FreeBSD does not allow overwriting MBR */
 #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
 #define GEOM_SYSCTL    "kern.geom.debugflags"
-         int old_flags, flags;
+         int old_flags;
          size_t sizeof_int = sizeof (int);
 
          if (sysctlbyname (GEOM_SYSCTL, &old_flags, &sizeof_int, NULL, 0) != 0)
@@ -794,7 +794,7 @@
          if ((old_flags & 0x10) == 0)
            {
              /* "allow foot shooting", see geom(4) */
-             flags = old_flags | 0x10;
+             int flags = old_flags | 0x10;
 
              if (sysctlbyname (GEOM_SYSCTL, NULL, NULL, &flags, sizeof (int)) 
!= 0)
                grub_printf ("failed to set " GEOM_SYSCTL "sysctl: %s\n", 
strerror (errno));
@@ -802,7 +802,7 @@
 #endif
          disks[drive].flags = open (devname, O_RDWR);
 #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
-         if (flags != old_flags)
+         if ((old_flags & 0x10) == 0)
            {
              if (sysctlbyname (GEOM_SYSCTL, NULL, NULL, &old_flags, sizeof 
(int)) != 0)
                grub_printf ("failed to set " GEOM_SYSCTL "sysctl: %s\n", 
strerror (errno));

-- 
Robert Millan




reply via email to

[Prev in Thread] Current Thread [Next in Thread]