Below is a list of pages that I would like to see in the man-pages set. If you are thinking of writing one or more of these pages, then:
mtk.manpages@gmail.comCC
linux-man@vger.kernel.organd CC any other interested parties, including any people that you know of who might be suitable reviewers for the page.
| System call |
Since kernel |
Notes |
| endian_switch(2) | 2.6.26 | POWER 6 specific; see http://thread.gmane.org/gmane.linux.ltp/5233/ |
| fanotify_init(2), fanotify_mark(2) | 2.6.37 | These system calls were added in 2.6.36, but disabled while the API was finalized. |
| perfmonctl(2) | 2.4 | IA-64 specific. There is a rather incomplete page in downstream Fedora. See also "The perfmon2 interface specification", http://www.hpl.hp.com/techreports/2004/HPL-2004-200R1.html |
| restart_syscall(2) | 2.6 | |
|
add_key(2)
keyctl(2) request_key(2) |
2.6.10 |
See:
Documentation/keys.txt
and
Documentation/keys-request-key.txt.
Requires CONFIG_KEYS (and optionally CONFIG_KEYS_DEBUG_PROC_KEYS)
under "Security options"
Versions of these pages exist, but more work needs to be done. |
| sys_debug_setcontext(2) | 2.6.11 | PowerPC if CONFIG_POWERPC kernel config option is enabled |
There is no man page for the /sys file system: there probably should be a sys(5) page similar to proc(5). The kernel source file Documentation/filesystems/sysfs.txt provides a starting point for this page.
A list of undocumented (GNU) C library functions is given below. Searches like the following are likely to suggest other functions that need to be documented:
MPDIR=~/man-pages # Directory containing uncompressed man-pages
GLIBCDIR=/SOME_DIR # Directory containing glibc tree
for f in $(cat $(find $GLIBCDIR -name Versions |
egrep -v '/(hurd|mach)/') |
egrep -v '({|}|^%)' |
sed -e 's/#.*//' |
tr ';' '\012' |
sed 's/^ *//' |
grep -v '^[_.]' |
sort -u); do
if ! test -f "$MPDIR/man3/$f.3" > /dev/null 2>&1 &&
! test -f "$MPDIR/man2/$f.2" > /dev/null 2>&1 ; then
echo $f;
fi
done
Alternatively, one can look at the text symbols exported by a particular library (unless the library symbols have been stripped), to see if there is a corresponding man page. Here, an example using libm:
nm -D /lib/libm.so.6 | sed -re '/^[0-9a-f]* T /!d; s///; /^_/d' | xargs whatis | sed -ne 's/: nothing appropriate\.$//p' | sort -u
In many cases, the interfaces listed below were found using such scripts, and it hasn't been checked whether these are obsolete interfaces that may better be not documented.
| Function |
Since glibc version |
Notes |
| dlinfo(3) | 2.3.3 | Solaris and FreeBSD have a similar function. |
| dladdr1(3) | 2.3.3 | |
| dlmopen(3) | 2.3.4 | Probably to be documented in dlopen(3); Solaris has a similar function. |
|
mallwatch(3)
tr_break(3) (?) |
The idea is that in a debugger, we set 'mallwatch' to an address returned by the malloc functions, set a breakpoint on tr_break() (defined inside glibc), and then continue execution. When a malloc operation touches the address referred to by 'mallwatch', the breakpoint is actioned. mtrace() must be used to install the necessary malloc hooks. | |
| posix_madvise(3) | 2.2 | POSIX_MADV_DONTNEED became a no-op in glibc 2.7, reflecting the fact that the underlying madvise(MADV_DONTNEED) is not consistent with POSIX semantics. |
| quick_exit(3), at_quick_exit(3) | New in glibc 2.10. See http://udrepper.livejournal.com/20948.html and http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm. Standardized in C11. | |
|
res_ninit(3),
res_nmkquery(3), res_nquery(3), res_nquerydomain(3), res_nsearch(3), res_nsend(3), res_nclose(3) res_gethostbyaddr(3) res_gethostbyname(3) res_gethostbyname2(3) res_send_setqhook(3) res_send_setrhook(3) |
2.8 | Perhaps to be documented on resolver(3) page. |
|
isalnum_l(3)
isalpha_l(3) isascii_l(3) isblank_l(3) iscntrl_l(3) isdigit_l(3) isgraph_l(3) islower_l(3) isprint_l(3) ispunct_l(3) isspace_l(3) isupper_l(3) iswalnum_l(3) iswalpha_l(3) iswblank_l(3) iswcntrl_l(3) iswctype_l(3) iswdigit_l(3) iswgraph_l(3) iswlower_l(3) iswprint_l(3) iswpunct_l(3) iswspace_l(3) iswupper_l(3) iswxdigit_l(3) isxdigit_l(3) nl_langinfo_l(3) strcasecmp_l(3) strcoll_l(3) strerror_l(3) strfmon_l(3) strftime_l(3) strncasecmp_l(3) strptime_l(3) strtod_l(3) strtof_l(3) strtol_l(3) strtold_l(3) strtoll_l(3) strtoul_l(3) strtoull_l(3) strxfrm_l(3) toascii_l(3) tolower_l(3) toupper_l(3) towctrans_l(3) towlower_l(3) towupper_l(3) wcscasecmp_l(3) wcscoll_l(3) wcsftime_l(3) wcsncasecmp_l(3) wcstod_l(3) wcstof_l(3) wcstol_l(3) wcstold_l(3) wcstoll_l(3) wcstoul_l(3) wcstoull_l(3) wcsxfrm_l(3) wctrans_l(3) wctype_l(3) |
Locale functions -- See POSIX.1-2008 specification | |
| uselocale(3), newlocale(3), duplocale(3), freelocale(3) | These functions are in POSIX.1-2008; made public in glibc 2.3 (there was an earlier "unstable" implementation in glibc, with function names prefixed with "__"). The feature test macro requirements changed in glibc 2.10. | |
| register_printf_function(), parse_printf_format(), | 2.0 | There are info pages, and <printf.h> contains useful information. |
|
endsgent(3)
fgetsgent(3) fgetsgent_r(3) getsgent(3) getsgent_r(3) getsgnam(3) getsgnam_r(3) putsgent(3) setsgent(3) sgetsgent(3) sgetsgent_r(3) |
Shadow group file functions, analogous to shadow password file functions | |
|
if_freenameindex(3)
if_indextoname(3) if_nameindex(3) if_nametoindex(3) |
||
|
advance(3)
step(3) loc1(3), loc2(3), locs(3) re_compile_fastmap(3) re_compile_pattern(3) re_match(3) re_match_2(3) re_max_failures(3) re_search(3) re_search_2(3) re_set_registers(3) re_set_syntax(3) re_syntax_options(3) |
||
|
gamma_r(3)
gammaf_r(3) gammal_r(3) |
||
|
inet_net_ntop(3)
inet_net_pton(3) inet_neta(3) inet_nsap_addr(3) inet_nsap_ntoa(3) |
||
|
parse_printf_format(3)
printf_size(3) printf_size_info(3) register_printf_function(3) register_printf_modifier(3) register_printf_specifier(3) register_printf_type(3) |
||
|
clntunix_create(3)
getnetname(3) netname(3) getpublickey(3) getsecretkey(3) key_decryptsession_pk(3) key_encryptsession_pk(3) key_get_conv(3) key_setnet(3) rpc_createerr(3) rpc_createerr(3) svc_exit(3) svc_fdset(3) svc_getreq_common(3) svc_getreq_poll(3) svc_max_pollfd(3) svc_pollfd(3) svcauthdes_stats(3) svcudp_enablecache(3) svcunix_create(3) svcunixfd_create(3) |
||
|
authdes_create(3)
authdes_getucred(3) authdes_pk_create(3) |
||
|
getipv4sourcefilter(3)
getsourcefilter(3) setipv4sourcefilter(3) setsourcefilter(3) |
||
|
ntp_adjtime(3)
ntp_gettime(3) ntp_gettimex(3) |
||
|
idna_to_ascii_lz(3)
idna_to_unicode_lzlz(3) |
There are various other "idna" functions not listed in a Versions file? | |
|
get_avphys_pages(3)
get_phys_pages(3) |
There are also: sysconf(_SC_AVPHYS_PAGES) and sysconf(_SC_PHYS_PAGES) | |
|
moncontrol(3)
monstartup(3) profil_counter(3) sprofil(3) |
||
| glob_pattern_p(3) | Needs _GNU_SOURCE | |
| group_member(3) | Needs _GNU_SOURCE | |
|
rexecoptions(3)
ruserpass(3) |
Not in glibc 2.12 headers? | |
|
h_errlist(3)
h_nerr(3) |
Not in glibc 2.12 headers? Probably deprecated. | |
|
host2netname(3)
netname2host(3) netname2user(3) user2netname(3) |
||
| isfdtype(3) | Needs _BSD_SOURCE or _SVID_SOURCE | |
| isctype(3) | Needs _GNU_SOURCE | |
|
ns_datetosecs(3)
ns_format_ttl(3) ns_get16(3) ns_get32(3) ns_initparse(3) ns_makecanon(3) ns_msg_getflag(3) ns_name_compress(3) ns_name_ntol(3) ns_name_ntop(3) ns_name_pack(3) ns_name_pton(3) ns_name_rollback(3) ns_name_skip(3) ns_name_uncompress(3) ns_name_unpack(3) ns_parse_ttl(3) ns_parserr(3) ns_put16(3) ns_put32(3) ns_samedomain(3) ns_samename(3) ns_skiprr(3) ns_sprintrr(3) ns_sprintrrf(3) ns_subdomain(3) |
||
|
obstack_alloc_failed_handler(3)
obstack_exit_failure(3) obstack_free(3) obstack_printf(3) obstack_vprintf(3) open_obstack_stream(3) |
||
|
inet6_opt_append(3)
inet6_opt_find(3) inet6_opt_finish(3) inet6_opt_get_val(3) inet6_opt_init(3) inet6_opt_next(3) inet6_opt_set_val(3) inet6_option_alloc(3) inet6_option_append(3) inet6_option_find(3) inet6_option_init(3) inet6_option_next(3) inet6_option_space(3) inet6_rth_add(3) inet6_rth_getaddr(3) inet6_rth_init(3) inet6_rth_reverse(3) inet6_rth_segments(3) inet6_rth_space(3) |
||
|
nis_add(3)
nis_add_entry(3) nis_addmember(3) nis_checkpoint(3) nis_clone_directory(3) nis_clone_object(3) nis_clone_result(3) nis_creategroup(3) nis_destroy_object(3) nis_destroygroup(3) nis_dir_cmp(3) nis_domain_of(3) nis_domain_of_r(3) nis_first_entry(3) nis_free_directory(3) nis_free_object(3) nis_free_request(3) nis_freenames(3) nis_freeresult(3) nis_freeservlist(3) nis_freetags(3) nis_getnames(3) nis_getservlist(3) nis_ismember(3) nis_leaf_of(3) nis_leaf_of_r(3) nis_lerror(3) nis_list(3) nis_local_directory(3) nis_local_group(3) nis_local_host(3) nis_local_principal(3) nis_lookup(3) nis_mkdir(3) nis_modify(3) nis_modify_entry(3) nis_name_of(3) nis_name_of_r(3) nis_next_entry(3) nis_perror(3) nis_ping(3) nis_print_directory(3) nis_print_entry(3) nis_print_group(3) nis_print_group_entry(3) nis_print_link(3) nis_print_object(3) nis_print_result(3) nis_print_rights(3) nis_print_table(3) nis_read_obj(3) nis_remove(3) nis_remove_entry(3) nis_removemember(3) nis_rmdir(3) nis_servstate(3) nis_sperrno(3) nis_sperror(3) nis_sperror_r(3) nis_stats(3) nis_verifygroup(3) nis_write_obj(3) |
||
|
yp_all(3)
yp_bind(3) yp_first(3) yp_get_default_domain(3) yp_maplist(3) yp_master(3) yp_match(3) yp_next(3) yp_order(3) yp_unbind(3) yp_update(3) ypbinderr_string(3) yperr_string(3) ypprot_err(3) |
||
|
xdr_authdes_cred(3)
xdr_authdes_verf(3) xdr_cback_data(3) xdr_cryptkeyarg(3) xdr_cryptkeyarg2(3) xdr_cryptkeyres(3) xdr_des_block(3) xdr_domainname(3) xdr_getcredres(3) xdr_hyper(3) xdr_int16_t(3) xdr_int32_t(3) xdr_int64_t(3) xdr_int8_t(3) xdr_key_netstarg(3) xdr_key_netstres(3) xdr_keybuf(3) xdr_keydat(3) xdr_keystatus(3) xdr_longlong_t(3) xdr_mapname(3) xdr_netnamestr(3) xdr_netobj(3) xdr_obj_p(3) xdr_peername(3) xdr_quad_t(3) xdr_rmtcall_args(3) xdr_rmtcallres(3) xdr_sizeof(3) xdr_u_hyper(3) xdr_u_longlong_t(3) xdr_u_quad_t(3) xdr_uint16_t(3) xdr_uint32_t(3) xdr_uint64_t(3) xdr_uint8_t(3) xdr_unixcred(3) xdr_valdat(3) xdr_yp_buf(3) xdr_ypall(3) xdr_ypbind_binding(3) xdr_ypbind_resp(3) xdr_ypbind_resptype(3) xdr_ypbind_setdom(3) xdr_ypdelete_args(3) xdr_ypmap_parms(3) xdr_ypmaplist(3) xdr_yppush_status(3) xdr_yppushresp_xfr(3) xdr_ypreq_key(3) xdr_ypreq_nokey(3) xdr_ypreq_xfr(3) xdr_ypresp_all(3) xdr_ypresp_key_val(3) xdr_ypresp_maplist(3) xdr_ypresp_master(3) xdr_ypresp_order(3) xdr_ypresp_val(3) xdr_ypresp_xfr(3) xdr_ypstat(3) xdr_ypupdate_args(3) xdr_ypxfrstat(3) |
||
|
td_init(3)
td_log(3) td_symbol_list(3) td_ta_clear_event(3) td_ta_delete(3) td_ta_enable_stats(3) td_ta_event_addr(3) td_ta_event_getmsg(3) td_ta_get_nthreads(3) td_ta_get_ph(3) td_ta_get_stats(3) td_ta_map_id2thr(3) td_ta_map_lwp2thr(3) td_ta_new(3) td_ta_reset_stats(3) td_ta_set_event(3) td_ta_setconcurrency(3) td_ta_thr_iter(3) td_ta_tsd_iter(3) td_thr_clear_event(3) td_thr_dbresume(3) td_thr_dbsuspend(3) td_thr_event_enable(3) td_thr_event_getmsg(3) td_thr_get_info(3) td_thr_getfpregs(3) td_thr_getgregs(3) td_thr_getxregs(3) td_thr_getxregsize(3) td_thr_set_event(3) td_thr_setfpregs(3) td_thr_setgregs(3) td_thr_setprio(3) td_thr_setsigpending(3) td_thr_setxregs(3) td_thr_sigsetmask(3) td_thr_tls_get_addr(3) td_thr_tlsbase(3) td_thr_tsd(3) td_thr_validate(3) |
libthread | |
| printf_size(), printf_size_info() | 2.1 | There are info pages, and <printf.h> contains useful information. |
|
argp_error(3)
argp_err_exit_status(3) (variable) argp_failure(3) argp_help(3) argp_parse(3) argp_program_bug_address(3) argp_program_version(3) argp_program_version_hook(3) argp_state_help(3) argp_usage(3) |
There are info pages. | |
|
posix_spawn(3)
posix_spawnattr_destroy(3) posix_spawnattr_getflags(3) posix_spawnattr_getpgroup(3) posix_spawnattr_getschedparam(3) posix_spawnattr_getschedpolicy(3) posix_spawnattr_getsigdefault(3) posix_spawnattr_getsigmask(3) posix_spawnattr_init(3) posix_spawnattr_setflags(3) posix_spawnattr_setpgroup(3) posix_spawnattr_setschedparam(3) posix_spawnattr_setschedpolicy(3) posix_spawnattr_setsigdefault(3) posix_spawnattr_setsigmask(3) posix_spawn_file_actions_addclose(3) posix_spawn_file_actions_adddup2(3) posix_spawn_file_actions_addopen(3) posix_spawn_file_actions_destroy(3) posix_spawn_file_actions_init(3) posix_spawnp(3) |
Work is in progress on these pages. | |
|
if_freenameindex(3)
if_indextoname(3) if_nameindex(3) if_nametoindex(3) |
||
|
Various wide-character functions
(with their traditional equivalents mentioned in parentheses) |
||
|
wscanf(3) (scanf(3))
fwscanf(3) (fscanf(3)) swscanf(3) (sscanf(3)) vfwscanf(3) (vfscanf(3)) vswscanf(3) (vsscanf(3)) wcschrnul(3) (strchrnul(3)) wcscoll(3) (strcoll(3)) wcsftime(3) (strftime(3)) wcstod(3) (strtod(3)) wcstof(3) (strtof(3)) wcstold(3) (strtold(3)) wcstol(3) (atol(3)) wcstol(3) (strtol(3)) wcstoul(3) (strtoul(3)) wcstoll(3) (strtoll(3)) wcstoull(3) (strtoull(3)) wcstoq(3) (atoq(3)) wcstoq(3) (strtoq(3)) wcstouq(3) (strtouq(3)) wcswcs(3) (strstr(3)) wcsxfrm(3) (strxfrm(3)) |
After these man pages are written, add SEE ALSO entries from the pages for the traditional functions to the pages describing their wide-character equivalents. | |
| wmemrtombs(3) | ||
|
swscanf(3)
vfwscanf(3) vswscanf(3) vwscanf(3) wscanf(3) |
||
And last, but far from least, the POSIX threads API. Note that there is an existing, outdated set of pages supplied with glibc that document the old LinuxThreads implementation. (These pages are written under a license that allows re-use, so some material that they contain could be used in new pages.)
What is required is a set of pages that document the complete API, describing details where LinuxThreads and NPTL diverge from the standard. The existing pthreads(7) man page, which gives an overview of Pthreads implementations on Linux, is designed as a background document for these man pages.
The list of required man pages is long (related functions can be grouped on a single page); those marked with more asterisks are probably the most desirable to get done first.
| Function |
Since glibc version |
Notes |
| pthread_atfork(3) | * | |
| pthread_barrierattr_destroy(3) | ||
| pthread_barrierattr_getpshared(3) | ||
| pthread_barrierattr_init(3) | ||
| pthread_barrierattr_setpshared(3) | ||
| pthread_barrier_destroy(3) | ||
| pthread_barrier_init(3) | ||
| pthread_barrier_wait(3) | ||
| pthread_condattr_destroy(3) | ||
| pthread_condattr_getclock(3) | ||
| pthread_condattr_getpshared(3) | ||
| pthread_condattr_init(3) | ||
| pthread_condattr_setclock(3) | ||
| pthread_condattr_setpshared(3) | ||
| pthread_cond_broadcast(3) | ** | |
| pthread_cond_destroy(3) | ** | |
| pthread_cond_init(3) | ** | |
| pthread_cond_signal(3) | ** | |
| pthread_cond_timedwait(3) | ** | |
| pthread_cond_wait(3) | ** | |
| pthread_getconcurrency(3) | ||
| pthread_getname_np(3), pthread_setname_np(3) | 2.12 | See kernel commit 4614a696bd1c3a9af3a08f0e5874830a85b889d4 |
| pthread_getspecific(3), pthread_setspecific(3) | ** | |
| pthread_key_create(3) | ** | |
| pthread_key_delete(3) | ** | |
| pthread_mutexattr_destroy(3) | ||
| pthread_mutexattr_getpshared(3) | ||
| pthread_mutexattr_gettype(3) | ||
| pthread_mutexattr_init(3) | ||
| pthread_mutexattr_setpshared(3) | ||
| pthread_mutexattr_settype(3) | ||
| pthread_mutex_consistent_np(3) | 2.4 | POSIX.1-2008 has pthread_mutex_consistent() |
| pthread_mutexattr_getrobust_np(3) | 2.4 | POSIX.1-2008 has pthread_mutexattr_getrobust() |
| pthread_mutexattr_setrobust_np(3) | 2.4 | POSIX.1-2008 has pthread_mutexattr_setrobust() |
| pthread_mutexattr_getprotocol(3) | 2.4 | |
| pthread_mutexattr_setprotocol(3) | 2.4 | |
| pthread_mutexattr_getprioceiling(3) | 2.4 | |
| pthread_mutexattr_setprioceiling(3) | 2.4 | |
| pthread_mutex_getprioceiling(3) | 2.4 | |
| pthread_mutex_setprioceiling(3) | 2.4 | |
| pthread_mutex_destroy(3) | ** | |
| pthread_mutex_init(3) | ** | |
| pthread_mutex_lock(3) | ** | |
| pthread_mutex_timedlock(3) | ** | |
| pthread_mutex_trylock(3) | ** | |
| pthread_mutex_unlock(3) | ** | |
| pthread_rwlockattr_destroy(3) | ||
| pthread_rwlockattr_getkind_np(3) | ||
| pthread_rwlockattr_getpshared(3) | ||
| pthread_rwlockattr_init(3) | ||
| pthread_rwlockattr_setkind_np(3) | ||
| pthread_rwlockattr_setpshared(3) | ||
| pthread_rwlock_destroy(3) | ||
| pthread_rwlock_init(3) | ||
| pthread_rwlock_rdlock(3) | ||
| pthread_rwlock_timedrdlock(3) | ||
| pthread_rwlock_timedwrlock(3) | ||
| pthread_rwlock_tryrdlock(3) | ||
| pthread_rwlock_trywrlock(3) | ||
| pthread_rwlock_unlock(3) | ||
| pthread_rwlock_wrlock(3) | ||
| pthread_spin_destroy(3) | ||
| pthread_spin_init(3) | ||
| pthread_spin_lock(3) | ||
| pthread_spin_trylock(3) | ||
| pthread_spin_unlock(3) |