Re: [PATCH] Add PCI_DEVICE_TABLE macro

2008-02-20 Thread Jeff Garzik

Greg KH wrote:

On Mon, Feb 18, 2008 at 08:34:42AM +0100, Jonas Bonn wrote:

And again, what does this buy us?
Clarity and simplicity, I hope... there are a bunch of definitions 
scattered about the kernel that omit the __devinitdata modifier despite the 
documentation stating that it should always be there.  The definition 
really should have been const, which wasn't possible before but has become 
so with the addition of the __devinitconst attribute.


Furthermore, there are definitions that use "const" and __devinitdata, 
which is explicitly wrong but the compiler doesn't catch section mismatches 
if there's only one such one case in the module (which is often the case).


Adding the __devinitconst modifier where there was nothing before buys us 
memory.  Adding the const modifier gives the compiler a chance to do its 
thing.  Changing __devinitdata to __devinitconst where it was wrong 
actually fixes some compiler errors in older (mid-release) kernels that 
were patched over by "removing" the section attribute altogether (which 
wastes memory).


Adding the macro (Olof's idea, not mine) makes it pretty difficult to get 
this definition wrong... I'll do the rest of the cleanup, but I need to 
know whether it's better to use a macro like this, or to open code the 
definitions.  I prefer the macro approach...


Hope this makes some sense...


Ok, yes it does, thanks for the explaination.

Please, can you add this very good text to the changelog entry for the
addition of the macro, and to the documentation somewhere?  I'd be glad
to take the patch if that was done.


I would suggest having a DECLARE_ prefix in there, like other subsystems 
do...


Jeff




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Add PCI_DEVICE_TABLE macro

2008-02-20 Thread Greg KH
On Mon, Feb 18, 2008 at 08:34:42AM +0100, Jonas Bonn wrote:
>> And again, what does this buy us?
>
> Clarity and simplicity, I hope... there are a bunch of definitions 
> scattered about the kernel that omit the __devinitdata modifier despite the 
> documentation stating that it should always be there.  The definition 
> really should have been const, which wasn't possible before but has become 
> so with the addition of the __devinitconst attribute.
>
> Furthermore, there are definitions that use "const" and __devinitdata, 
> which is explicitly wrong but the compiler doesn't catch section mismatches 
> if there's only one such one case in the module (which is often the case).
>
> Adding the __devinitconst modifier where there was nothing before buys us 
> memory.  Adding the const modifier gives the compiler a chance to do its 
> thing.  Changing __devinitdata to __devinitconst where it was wrong 
> actually fixes some compiler errors in older (mid-release) kernels that 
> were patched over by "removing" the section attribute altogether (which 
> wastes memory).
>
> Adding the macro (Olof's idea, not mine) makes it pretty difficult to get 
> this definition wrong... I'll do the rest of the cleanup, but I need to 
> know whether it's better to use a macro like this, or to open code the 
> definitions.  I prefer the macro approach...
>
> Hope this makes some sense...

Ok, yes it does, thanks for the explaination.

Please, can you add this very good text to the changelog entry for the
addition of the macro, and to the documentation somewhere?  I'd be glad
to take the patch if that was done.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] Add PCI_DEVICE_TABLE macro

2008-02-20 Thread Jonas Bonn
The definitions of struct pci_device_id arrays should generally follow
the same pattern across the entire kernel.  This macro defines this
array as const and puts it into the __devinitconst section.

Signed-off-by: Jonas Bonn <[EMAIL PROTECTED]>
---
 include/linux/pci.h |9 +
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 87195b6..c7a91b1 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -389,6 +389,15 @@ struct pci_driver {
 #defineto_pci_driver(drv) container_of(drv, struct pci_driver, driver)
 
 /**
+ * PCI_DEVICE_TABLE - macro used to describe a pci device table
+ * @_table: device table name
+ *
+ * This macro is used to create a struct pci_device_id array (a device table) 
+ * in a generic manner.
+ */
+#define PCI_DEVICE_TABLE(_table) const struct pci_device_id _table[] 
__devinitconst
+
+/**
  * PCI_DEVICE - macro used to describe a specific pci device
  * @vend: the 16 bit PCI Vendor ID
  * @dev: the 16 bit PCI Device ID
-- 
1.5.3.8


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] Add PCI_DEVICE_TABLE macro

2008-02-18 Thread Jonas Bonn
The definitions of struct pci_device_id arrays should generally follow
the same pattern across the entire kernel.  This macro defines this
array as const and puts it into the __devinitconst section.

Signed-off-by: Jonas Bonn <[EMAIL PROTECTED]>
---
 include/linux/pci.h |9 +
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 87195b6..c7a91b1 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -389,6 +389,15 @@ struct pci_driver {
 #defineto_pci_driver(drv) container_of(drv, struct pci_driver, driver)
 
 /**
+ * PCI_DEVICE_TABLE - macro used to describe a pci device table
+ * @_table: device table name
+ *
+ * This macro is used to create a struct pci_device_id array (a device table) 
+ * in a generic manner.
+ */
+#define PCI_DEVICE_TABLE(_table) const struct pci_device_id _table[] 
__devinitconst
+
+/**
  * PCI_DEVICE - macro used to describe a specific pci device
  * @vend: the 16 bit PCI Vendor ID
  * @dev: the 16 bit PCI Device ID
-- 
1.5.3.8


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Add PCI_DEVICE_TABLE macro

2008-02-17 Thread Jonas Bonn


And again, what does this buy us?



Clarity and simplicity, I hope... there are a bunch of definitions 
scattered about the kernel that omit the __devinitdata modifier despite 
the documentation stating that it should always be there.  The 
definition really should have been const, which wasn't possible before 
but has become so with the addition of the __devinitconst attribute.


Furthermore, there are definitions that use "const" and __devinitdata, 
which is explicitly wrong but the compiler doesn't catch section 
mismatches if there's only one such one case in the module (which is 
often the case).


Adding the __devinitconst modifier where there was nothing before buys 
us memory.  Adding the const modifier gives the compiler a chance to do 
its thing.  Changing __devinitdata to __devinitconst where it was wrong 
actually fixes some compiler errors in older (mid-release) kernels that 
were patched over by "removing" the section attribute altogether (which 
wastes memory).


Adding the macro (Olof's idea, not mine) makes it pretty difficult to 
get this definition wrong... I'll do the rest of the cleanup, but I need 
to know whether it's better to use a macro like this, or to open code 
the definitions.  I prefer the macro approach...


Hope this makes some sense...

/Jonas

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Add PCI_DEVICE_TABLE macro

2008-02-17 Thread Greg KH
On Sun, Feb 17, 2008 at 01:13:24PM +0100, Jonas Bonn wrote:
> I'm a bit uncertain whether the definition really should include the
> 'static' modifier... for most definitions of these tables this is ok,
> but there are a couple of cases where it should not be static, so the
> line would need to be open-coded again...

Yes, please don't make it static.

And again, what does this buy us?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Add PCI_DEVICE_TABLE macro

2008-02-17 Thread Randy Dunlap
On Sun, 17 Feb 2008 13:10:05 +0100 Jonas Bonn wrote:

> The definitions of struct pci_device_id arrays should generally follow
> the same pattern across the entire kernel.  This macro defines this
> array as static const and puts it into the __devinitconst section.
> 
> Signed-off-by: Jonas Bonn <[EMAIL PROTECTED]>
> ---
>  include/linux/pci.h |8 
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 87195b6..487d31c 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -389,6 +389,14 @@ struct pci_driver {
>  #define  to_pci_driver(drv) container_of(drv, struct pci_driver, driver)
>  
>  /**
> + * PCI_DEVICE_TABLE - macro used to describe a pci device table
> + * 
> + * This macro is used to create a struct pci_device_id array in a generic
> + * manner.
> + */
> +#define PCI_DEVICE_TABLE(_table) static const struct pci_device_id _table[] 
> __devinitconst
> +
> +/**
>   * PCI_DEVICE - macro used to describe a specific pci device
>   * @vend: the 16 bit PCI Vendor ID
>   * @dev: the 16 bit PCI Device ID
> -- 

Missing kernel-doc notation for the _table parameter.  See the
parameters for PCI_DEVICE() below for an example.

---
~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] Add PCI_DEVICE_TABLE macro

2008-02-17 Thread Jonas Bonn
I'm a bit uncertain whether the definition really should include the
'static' modifier... for most definitions of these tables this is ok,
but there are a couple of cases where it should not be static, so the
line would need to be open-coded again...

/Jonas

On Sun, 2008-02-17 at 13:10 +0100, Jonas Bonn wrote:
> The definitions of struct pci_device_id arrays should generally follow
> the same pattern across the entire kernel.  This macro defines this
> array as static const and puts it into the __devinitconst section.
> 
> Signed-off-by: Jonas Bonn <[EMAIL PROTECTED]>
> ---
>  include/linux/pci.h |8 
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 87195b6..487d31c 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -389,6 +389,14 @@ struct pci_driver {
>  #define  to_pci_driver(drv) container_of(drv, struct pci_driver, driver)
>  
>  /**
> + * PCI_DEVICE_TABLE - macro used to describe a pci device table
> + * 
> + * This macro is used to create a struct pci_device_id array in a generic
> + * manner.
> + */
> +#define PCI_DEVICE_TABLE(_table) static const struct pci_device_id _table[] 
> __devinitconst
> +
> +/**
>   * PCI_DEVICE - macro used to describe a specific pci device
>   * @vend: the 16 bit PCI Vendor ID
>   * @dev: the 16 bit PCI Device ID


signature.asc
Description: This is a digitally signed message part


[PATCH] Add PCI_DEVICE_TABLE macro

2008-02-17 Thread Jonas Bonn
The definitions of struct pci_device_id arrays should generally follow
the same pattern across the entire kernel.  This macro defines this
array as static const and puts it into the __devinitconst section.

Signed-off-by: Jonas Bonn <[EMAIL PROTECTED]>
---
 include/linux/pci.h |8 
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 87195b6..487d31c 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -389,6 +389,14 @@ struct pci_driver {
 #defineto_pci_driver(drv) container_of(drv, struct pci_driver, driver)
 
 /**
+ * PCI_DEVICE_TABLE - macro used to describe a pci device table
+ * 
+ * This macro is used to create a struct pci_device_id array in a generic
+ * manner.
+ */
+#define PCI_DEVICE_TABLE(_table) static const struct pci_device_id _table[] 
__devinitconst
+
+/**
  * PCI_DEVICE - macro used to describe a specific pci device
  * @vend: the 16 bit PCI Vendor ID
  * @dev: the 16 bit PCI Device ID
-- 
1.5.3.8


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/