Skip to contentSkip to conversation

appldata & nr_threads

DISCUSSION Gerald Schaefer 1 participant 1 message Apr 16, 2007 1 message not in the archive s390

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw
Quoted 10 lines · Christoph Hellwig

arch/s390/appldata/appldata_base.c:int nr_threads = -1; arch/s390/appldata/appldata_base.c:EXPORT_SYMBOL_GPL(nr_threads);

arch/s390/appldata/appldata_os.c:       u32 nr_threads;         /* number of threads               */
arch/s390/appldata/appldata_os.c:       P_DEBUG("nr_threads   = %u\n", os_data->nr_threads);
arch/s390/appldata/appldata_os.c:       os_data->nr_threads = nr_threads;

include/linux/sched.h:extern int nr_threads;
kernel/fork.c:int nr_threads; /* The idle threads do not count.. */

Quoted 6 lines

Can someone explain what's going on here? appldata_os.c apparently uses the appldata_base.c nr_threads because only that is exported. But it's always -1. Then again I don't quite understand how the linker doesn't complain about the two nr_threads symbols.

Could it be that s390 doesn't use -fno-common when compiling the kernel?

There is an #ifdef MODULE around the definition of nr_threads, so the linker won't see the two symbols.
This #ifdef MODULE code was just used for debugging once and it is completely irrelevant (junk) now since there is not even a module config option for appldata_base. So it's probably best to throw away that junk (this wouldn't even compile as a module because there is no struct page_state anymore).

---

 appldata_base.c |   38 --------------------------------------
 1 files changed, 38 deletions(-)
arch/s390/appldata/appldata_base.c +0 -38
diff -urpN linux-2.6/arch/s390/appldata/appldata_base.c linux-2.6-patched/arch/s390/appldata/appldata_base.c
@@ -668,45 +668,7 @@ EXPORT_SYMBOL_GPL(appldata_register_ops)
 EXPORT_SYMBOL_GPL(appldata_unregister_ops);
 EXPORT_SYMBOL_GPL(appldata_diag);
 
-#ifdef MODULE
-/*
- * Kernel symbols needed by appldata_mem and appldata_os modules.
- * However, if this file is compiled as a module (for testing only), these
- * symbols are not exported. In this case, we define them locally and export
- * those.
- */
-void si_swapinfo(struct sysinfo *val)
-{
-	val->freeswap = -1ul;
-	val->totalswap = -1ul;
-}
-
-unsigned long avenrun[3] = {-1 - FIXED_1/200, -1 - FIXED_1/200,
-				-1 - FIXED_1/200};
-int nr_threads = -1;
-
-void get_full_page_state(struct page_state *ps)
-{
-	memset(ps, -1, sizeof(struct page_state));
-}
-
-unsigned long nr_running(void)
-{
-	return -1;
-}
-
-unsigned long nr_iowait(void)
-{
-	return -1;
-}
-
-/*unsigned long nr_context_switches(void)
-{
-	return -1;
-}*/
-#endif /* MODULE */
 EXPORT_SYMBOL_GPL(si_swapinfo);
 EXPORT_SYMBOL_GPL(nr_threads);
 EXPORT_SYMBOL_GPL(nr_running);
 EXPORT_SYMBOL_GPL(nr_iowait);
-//EXPORT_SYMBOL_GPL(nr_context_switches);