Subject: Re: nsswitch.conf and irs.conf
To: Noriyuki Soda <soda@sra.co.jp>
From: None <itojun@iijlab.net>
List: tech-net
Date: 01/21/2003 14:26:37
>>> In this file, gethostbyname_r(3) calls gethostbyname(3) internally.
>>> In other words, what the IRS did is to make gethostbyname(3) MT safe
>>> to implement gethostbyname_r(3). :-O
>>> This is what I think wasteful.
>
>> 	what is wrong with that?
>
>Because: 
>
>- Using thread specific data has certain overhead on both
>  time and space.

	it's a tradeoff against code duplication and extra maintenance headache.

>- Using thread specific data makes code maintainability worse.
>  (You already saw I mistread it.)
>  It is nearly always better to pass per-thread data explicitly
>  in a function argument, rather than implicitly by using a
>  thread specific data, for code maintenance POV.
>  There are cases that one has to use thread specific data,
>  when one cannot change an intermediate function interface.
>  But in this IRS case, the thread specific data is not really
>  needed, because the IRS library can choose any function interface
>  in its internal implemetataion.

	i don't think you have read through IRS library, have you?  IMHO,
	you have no right to comment on this topic.  it always
	pass around pointer to struct net_data, which holds the data necessary
	for the thread.  it does not really rely upon thread specific data
	pthreads provides (you can compile BIND8 resolver without pthreads
	support - see #ifdef DO_PTHREADS).

>- It may make problems about reusability of our code.
>  If we make gethostbyname(3) thread safe, some of our code
>  may depend on the fact (by intentionally or accidentally).
>  Because such thread safe assumption of gethostbyname(3) isn't true
>  on other platforms, the code which depends on the assumption becomes
>  non portable to other platfroms.
>  So, if we make gethostbyname(3) thread safe, reusability
>  of our code may become worse.

	this is totally nonsense.  feel free to tell this to BIND8 developers.

itojun