2003-06-22 00:48:47

by Adrian Bunk

[permalink] [raw]
Subject: [patch] ixj.c: EXPORT_SYMBOL of static functions

drivers/telephony/ixj.c EXPORT_SYMBOL's two static functions.

Does this make any sense or is the patch below OK?

cu
Adrian


--- linux-2.5.72-mm2/drivers/telephony/ixj.c.old 2003-06-22 02:47:07.000000000 +0200
+++ linux-2.5.72-mm2/drivers/telephony/ixj.c 2003-06-22 02:51:49.000000000 +0200
@@ -404,14 +404,10 @@
return 0;
}

-static IXJ_REGFUNC ixj_DownloadG729 = &Stub;
-static IXJ_REGFUNC ixj_DownloadTS85 = &Stub;
static IXJ_REGFUNC ixj_PreRead = &Stub;
static IXJ_REGFUNC ixj_PostRead = &Stub;
static IXJ_REGFUNC ixj_PreWrite = &Stub;
static IXJ_REGFUNC ixj_PostWrite = &Stub;
-static IXJ_REGFUNC ixj_PreIoctl = &Stub;
-static IXJ_REGFUNC ixj_PostIoctl = &Stub;

static void ixj_read_frame(IXJ *j);
static void ixj_write_frame(IXJ *j);
@@ -790,97 +786,6 @@
return 0;
}

-static int ixj_register(int index, IXJ_REGFUNC regfunc)
-{
- int cnt;
- int retval = 0;
- switch (index) {
- case G729LOADER:
- ixj_DownloadG729 = regfunc;
- for (cnt = 0; cnt < IXJMAX; cnt++) {
- IXJ *j = get_ixj(cnt);
- while(test_and_set_bit(cnt, (void *)&j->busyflags) != 0) {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(1);
- }
- ixj_DownloadG729(j, 0L);
- clear_bit(cnt, &j->busyflags);
- }
- break;
- case TS85LOADER:
- ixj_DownloadTS85 = regfunc;
- for (cnt = 0; cnt < IXJMAX; cnt++) {
- IXJ *j = get_ixj(cnt);
- while(test_and_set_bit(cnt, (void *)&j->busyflags) != 0) {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(1);
- }
- ixj_DownloadTS85(j, 0L);
- clear_bit(cnt, &j->busyflags);
- }
- break;
- case PRE_READ:
- ixj_PreRead = regfunc;
- break;
- case POST_READ:
- ixj_PostRead = regfunc;
- break;
- case PRE_WRITE:
- ixj_PreWrite = regfunc;
- break;
- case POST_WRITE:
- ixj_PostWrite = regfunc;
- break;
- case PRE_IOCTL:
- ixj_PreIoctl = regfunc;
- break;
- case POST_IOCTL:
- ixj_PostIoctl = regfunc;
- break;
- default:
- retval = 1;
- }
- return retval;
-}
-
-EXPORT_SYMBOL(ixj_register);
-
-static int ixj_unregister(int index)
-{
- int retval = 0;
- switch (index) {
- case G729LOADER:
- ixj_DownloadG729 = &Stub;
- break;
- case TS85LOADER:
- ixj_DownloadTS85 = &Stub;
- break;
- case PRE_READ:
- ixj_PreRead = &Stub;
- break;
- case POST_READ:
- ixj_PostRead = &Stub;
- break;
- case PRE_WRITE:
- ixj_PreWrite = &Stub;
- break;
- case POST_WRITE:
- ixj_PostWrite = &Stub;
- break;
- case PRE_IOCTL:
- ixj_PreIoctl = &Stub;
- break;
- case POST_IOCTL:
- ixj_PostIoctl = &Stub;
- break;
- default:
- retval = 1;
- }
- return retval;
-}
-
-EXPORT_SYMBOL(ixj_unregister);
-
static void ixj_init_timer(IXJ *j)
{
init_timer(&j->timer);


2003-06-22 11:12:23

by Alan

[permalink] [raw]
Subject: Re: [patch] ixj.c: EXPORT_SYMBOL of static functions

On Sul, 2003-06-22 at 02:02, Adrian Bunk wrote:
> drivers/telephony/ixj.c EXPORT_SYMBOL's two static functions.
>
> Does this make any sense or is the patch below OK?

It's meant to export them. An exported static function is visible to
other modules.

2003-06-22 16:52:57

by Kai Germaschewski

[permalink] [raw]
Subject: Re: [patch] ixj.c: EXPORT_SYMBOL of static functions

On 22 Jun 2003, Alan Cox wrote:

> On Sul, 2003-06-22 at 02:02, Adrian Bunk wrote:
> > drivers/telephony/ixj.c EXPORT_SYMBOL's two static functions.
> >
> > Does this make any sense or is the patch below OK?
>
> It's meant to export them. An exported static function is visible to
> other modules.

The exported functions shouldn't normally be declared static though,
because that means that they will not be available to other modules in the
built-in case.

So most likely the correct fix is to remove the "static". However,
ixj_register() still doesn't seem to be used anywhere at all, at least not
by in-tree modules.

--Kai


2003-06-23 06:22:51

by Rusty Russell

[permalink] [raw]
Subject: Re: [patch] ixj.c: EXPORT_SYMBOL of static functions

In message <[email protected]> you write:
> On Sul, 2003-06-22 at 02:02, Adrian Bunk wrote:
> > drivers/telephony/ixj.c EXPORT_SYMBOL's two static functions.
> >
> > Does this make any sense or is the patch below OK?
>
> It's meant to export them. An exported static function is visible to
> other modules.

But only to modules. In general, exported shouldn't be static.

Someone care to clarify who uses these?
Rusty.
--
Anyone who quotes me in their sig is an idiot. -- Rusty Russell.