From: Michael H. <ho...@de...> - 2006-10-09 15:27:31
|
Hi all, I checked in the following fix on the 6.0.0 branch and head: "system_utsname" has been removed in Linux 2.6.19-rc1. This patch uses the new "init_uts_ns" (type uts_namespace) to get the utsname for new kernels. Michael --- diff -Naur lkcdutils/libklib/kl_util.c lkcdutils-utsname-fix/libklib/kl_util.c --- lkcdutils/libklib/kl_util.c 2006-04-05 09:48:10.000000000 +0200 +++ lkcdutils-utsname-fix/libklib/kl_util.c 2006-07-14 12:35:48.000000000 +0200 @@ -367,15 +367,19 @@ char *c; void *utsname; syment_t *sp; + kaddr_t addr; - if (!(sp = kl_lkup_symname("system_utsname"))) { + if (sp = kl_lkup_symname("system_utsname")) + addr = sp->s_addr; + else if (sp = kl_lkup_symname("init_uts_ns")) + addr = sp->s_addr + kl_member_offset("uts_namespace", "name"); + else return(0); - } utsname = kl_alloc_block(NEW_UTSNAME_SZ, K_TEMP); if (KL_ERROR) { return(0); } - GET_BLOCK(sp->s_addr, NEW_UTSNAME_SZ, utsname); + GET_BLOCK(addr, NEW_UTSNAME_SZ, utsname); if (KL_ERROR) { kl_free_block(utsname); return(0); |