2007-05-09 10:43:47

by Miles Lane

[permalink] [raw]
Subject: Re: 2.6.21-mm2 -- Compile error: include/linux/power_supp ly.h:125: error: field ‘changed_work’ has incomplete type

CC drivers/power/power_supply_core.o
In file included from drivers/power/power_supply_core.c:18:
include/linux/power_supply.h:125: error: field 'changed_work' has
incomplete type
drivers/power/power_supply_core.c: In function 'power_supply_changed_work':
drivers/power/power_supply_core.c:25: warning: type defaults to 'int'
in declaration of '__mptr'
drivers/power/power_supply_core.c:25: warning: initialization from
incompatible pointer type
drivers/power/power_supply_core.c: In function 'power_supply_changed':
drivers/power/power_supply_core.c:57: warning: implicit declaration of
function 'schedule_work'
drivers/power/power_supply_core.c: In function 'power_supply_register':
drivers/power/power_supply_core.c:103: warning: implicit declaration
of function 'INIT_WORK'
drivers/power/power_supply_core.c: In function 'power_supply_unregister':
drivers/power/power_supply_core.c:128: warning: implicit declaration
of function 'flush_scheduled_work'
make[2]: *** [drivers/power/power_supply_core.o] Error 1


2007-05-09 10:51:17

by Anton Vorontsov

[permalink] [raw]
Subject: Re: 2.6.21-mm2 -- Compile error: include/linux/power_supply.h:125: error: field ‘changed_work’ has incomplete type

On Wed, May 09, 2007 at 03:43:34AM -0700, Miles Lane wrote:
> CC drivers/power/power_supply_core.o
> In file included from drivers/power/power_supply_core.c:18:
> include/linux/power_supply.h:125: error: field 'changed_work' has
> incomplete type
> drivers/power/power_supply_core.c: In function 'power_supply_changed_work':
> drivers/power/power_supply_core.c:25: warning: type defaults to 'int'
> in declaration of '__mptr'
> drivers/power/power_supply_core.c:25: warning: initialization from
> incompatible pointer type
> drivers/power/power_supply_core.c: In function 'power_supply_changed':
> drivers/power/power_supply_core.c:57: warning: implicit declaration of
> function 'schedule_work'
> drivers/power/power_supply_core.c: In function 'power_supply_register':
> drivers/power/power_supply_core.c:103: warning: implicit declaration
> of function 'INIT_WORK'
> drivers/power/power_supply_core.c: In function 'power_supply_unregister':
> drivers/power/power_supply_core.c:128: warning: implicit declaration
> of function 'flush_scheduled_work'
> make[2]: *** [drivers/power/power_supply_core.o] Error 1

Oh oh.. yet another refactors in -mm. It compiles clean on bare
2.6.21, though. But power_supply.h is indeed wrong, it assumed that
workqueue.h included by other headers, it is not. I hope following patch
will fix it.


diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index 14e617b..2f47df7 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -14,6 +14,7 @@
#define __LINUX_POWER_SUPPLY_H__

#include <linux/device.h>
+#include <linux/workqueue.h>
#include <linux/leds.h>

/*