AW: AW: fmgr changes not yet ported to AIX

Поиск
Список
Период
Сортировка
От Zeugswetter Andreas SB
Тема AW: AW: fmgr changes not yet ported to AIX
Дата
Msg-id 11C1E6749A55D411A9670001FA687963368035@sdexcsrv1.f000.d0188.sd.spardat.at
обсуждение исходный текст
Ответы Re: AW: AW: fmgr changes not yet ported to AIX  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

> Zeugswetter Andreas SB <ZeugswetterA@wien.spardat.at> writes:
> > Why do you declare dlopen, dlsym, ... in dynamic_loader.h ?
> > They are defined in the port specific dynloader.h .
> > Why do you use "void pg_dlclose" when dlclose is "int dlclose" ?
> > This makes a wrapper function necessary.
> 
> It seems to me that the real problem here is that someone tried to
> take shortcuts in the AIX dynloader code.

actually most other ports do it that way. e.g. FreeBSD
so I guess that is why it is done like that. The aix.c and aix.h
where originally generic files to support the usual dl... functions,
and thus had no connex to postgres. I would like to keep it that way
since aix now has it's own libdl.a with the functions making them obsolete
(they have problems accessing exported global variables though,
have to look deeper).

> Instead of implementing
> the same interface that the rest of the ports support, the AIX files
> try to force their own definition of the pg_dlXXX functions --- and
> for what?  To save a wrapper function?  These are hardly performance-
> critical routines, so I don't see the point.

Yes.

> 
> I propose the following changes instead.  I don't have any way to
> test them however --- would you check them?

With the modification below it works, yes. 

> 
>             regards, tom lane
> 
> *** aix.h~    Mon Jul 17 00:40:12 2000
> --- aix.h    Mon Jul 17 00:41:34 2000
> ***************
> *** 45,56 ****
>   
>   #ifdef __cplusplus
>   }
> - 
>   #endif
> - 
> - #define  pg_dlopen(f)    dlopen(filename, RTLD_LAZY)
> - #define  pg_dlsym(h,f)    dlsym(h, f)
> - #define  pg_dlclose(h)    dlclose(h)
> - #define  pg_dlerror()    dlerror()
>   
>   #endif     /* __dlfcn_h__ */
> --- 45,50 ----
> *** aix.c~    Mon Jul 17 00:40:19 2000
> --- aix.c    Mon Jul 17 00:45:34 2000

also #include "utils/dynamic_loader.h" for PGFunction

> ***************
> *** 601,603 ****
> --- 601,631 ----
>       free(buf);
>       return ret;
>   }
> + 
> + /*
> +  * PostgreSQL interface to the above functions
> +  */
> + 
> + void *
> + pg_dlopen(char *filename)
> + {
> +     return dlopen(filename, RTLD_LAZY);
> + }
> + 
> + PGFunction
> + pg_dlsym(void *handle, char *funcname)
> + {
> +     return (PGFunction) dlsym(handle, funcname);
> + }
> + 
> + void
> + pg_dlclose(void *handle)
> + {
> +     dlclose(h);

you mean: dlclose(handle);

> + }
> + 
> + char *
> + pg_dlerror()
> + {
> +     return dlerror();
> + }
>

Andreas 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: About these IPC parameters
Следующее
От: Tom Lane
Дата:
Сообщение: Re: AW: AW: fmgr changes not yet ported to AIX