lkml.org 
[lkml]   [2003]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH 2.4] dmi_ident made public

Hi everyone,

Here is a simple patch for the 2.4 kernel series that makes dmi_ident
(as defined in arch/i386/kernel/dmi_scan.c) public.

The idea is that this array is actually needed by other parts of the
kernel. Known modules in this case are:
- i8k (drivers/char/i8k.c);
- i2c-piix4 (from the LM Sensors project [1]);
- omke (from the OMKE project [2]).
Right now, these modules are scanning the DMI table again, on their own.
This is bad for at least two reasons:
- waste of time;
- code duplication.

So, this simple patch is the first step in a simplification process that
would let us remove all duplicated code. It is somehow based on a patch
Soos Peter, the author of OMKE, sent me one month ago, so I have to
credit him here.

If this patch is accepted and applied, I'll work together with Peter to
get the three above-mentioned modules simplified, as well as any other I
may have missed. Also, I'll take care of porting this patch to the 2.5
series, since it also belongs there.

All comments welcome, please CC me. And please apply if it's OK.

[1] http://www.lm-sensors.nu/
[2] http://sourceforge.net/projects/omke/

--
Jean Delvare
http://www.ensicaen.ismra.fr/~delvare/
diff -ruN linux-2.4.21-rc1-orig/arch/i386/kernel/Makefile linux-2.4.21-rc1/arch/i386/kernel/Makefile
--- linux-2.4.21-rc1-orig/arch/i386/kernel/Makefile 2003-04-24 15:56:25.000000000 +0200
+++ linux-2.4.21-rc1/arch/i386/kernel/Makefile 2003-04-24 16:24:58.000000000 +0200
@@ -14,7 +14,8 @@

O_TARGET := kernel.o

-export-objs := mca.o mtrr.o msr.o cpuid.o microcode.o i386_ksyms.o time.o
+export-objs := mca.o mtrr.o msr.o cpuid.o microcode.o i386_ksyms.o time.o \
+ dmi_scan.o

obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o vm86.o \
ptrace.o i8259.o ioport.o ldt.o setup.o time.o sys_i386.o \
diff -ruN linux-2.4.21-rc1-orig/arch/i386/kernel/dmi_scan.c linux-2.4.21-rc1/arch/i386/kernel/dmi_scan.c
--- linux-2.4.21-rc1-orig/arch/i386/kernel/dmi_scan.c 2003-04-24 16:14:06.000000000 +0200
+++ linux-2.4.21-rc1/arch/i386/kernel/dmi_scan.c 2003-04-24 17:42:49.000000000 +0200
@@ -5,11 +5,13 @@
#include <linux/init.h>
#include <linux/apm_bios.h>
#include <linux/slab.h>
+#include <linux/module.h>
#include <asm/io.h>
#include <linux/pm.h>
#include <asm/keyboard.h>
#include <asm/system.h>
#include <linux/bootmem.h>
+#include <linux/dmi.h>

#include "pci-i386.h"

@@ -131,22 +133,7 @@
return -1;
}

-
-enum
-{
- DMI_BIOS_VENDOR,
- DMI_BIOS_VERSION,
- DMI_BIOS_DATE,
- DMI_SYS_VENDOR,
- DMI_PRODUCT_NAME,
- DMI_PRODUCT_VERSION,
- DMI_BOARD_VENDOR,
- DMI_BOARD_NAME,
- DMI_BOARD_VERSION,
- DMI_STRING_MAX
-};
-
-static char *dmi_ident[DMI_STRING_MAX];
+char *dmi_ident[DMI_STRING_MAX];

/*
* Save a DMI string
@@ -829,7 +816,7 @@

static void __init dmi_decode(struct dmi_header *dm)
{
- u8 *data = (u8 *)dm;
+// u8 *data = (u8 *)dm;

switch(dm->type)
{
@@ -877,3 +864,5 @@
if(err == 0)
dmi_check_blacklist();
}
+
+EXPORT_SYMBOL(dmi_ident);
diff -ruN linux-2.4.21-rc1-orig/include/linux/dmi.h linux-2.4.21-rc1/include/linux/dmi.h
--- linux-2.4.21-rc1-orig/include/linux/dmi.h 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.4.21-rc1/include/linux/dmi.h 2003-04-24 16:32:02.000000000 +0200
@@ -0,0 +1,20 @@
+#ifndef _LINUX_DMI_H
+#define _LINUX_DMI_H
+
+enum
+{
+ DMI_BIOS_VENDOR,
+ DMI_BIOS_VERSION,
+ DMI_BIOS_DATE,
+ DMI_SYS_VENDOR,
+ DMI_PRODUCT_NAME,
+ DMI_PRODUCT_VERSION,
+ DMI_BOARD_VENDOR,
+ DMI_BOARD_NAME,
+ DMI_BOARD_VERSION,
+ DMI_STRING_MAX
+};
+
+extern char *dmi_ident[DMI_STRING_MAX];
+
+#endif
\
 
 \ /
  Last update: 2005-03-22 13:34    [W:2.391 / U:0.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site