libc.info-14 291 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464
  1. This is libc.info, produced by makeinfo version 7.3 from libc.texinfo.
  2. This is ‘The GNU C Library Reference Manual’, for version 2.43.
  3. Copyright © 1993-2026 Free Software Foundation, Inc.
  4. Permission is granted to copy, distribute and/or modify this document
  5. under the terms of the GNU Free Documentation License, Version 1.3 or
  6. any later version published by the Free Software Foundation; with the
  7. Invariant Sections being "Free Software Needs Free Documentation" and
  8. "GNU Lesser General Public License", the Front-Cover texts being "A GNU
  9. Manual", and with the Back-Cover Texts as in (a) below. A copy of the
  10. license is included in the section entitled "GNU Free Documentation
  11. License".
  12. (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
  13. modify this GNU manual. Buying copies from the FSF supports it in
  14. developing GNU and promoting software freedom."
  15. INFO-DIR-SECTION Software libraries
  16. START-INFO-DIR-ENTRY
  17. * Libc: (libc). C library.
  18. END-INFO-DIR-ENTRY
  19. INFO-DIR-SECTION GNU C library functions and macros
  20. START-INFO-DIR-ENTRY
  21. * ALTWERASE: (libc)Local Modes.
  22. * ARGP_ERR_UNKNOWN: (libc)Argp Parser Functions.
  23. * ARG_MAX: (libc)General Limits.
  24. * BAUD_MAX: (libc)Line Speed.
  25. * BC_BASE_MAX: (libc)Utility Limits.
  26. * BC_DIM_MAX: (libc)Utility Limits.
  27. * BC_SCALE_MAX: (libc)Utility Limits.
  28. * BC_STRING_MAX: (libc)Utility Limits.
  29. * BRKINT: (libc)Input Modes.
  30. * BUFSIZ: (libc)Controlling Buffering.
  31. * CCTS_OFLOW: (libc)Control Modes.
  32. * CHAR_BIT: (libc)Width of Type.
  33. * CHILD_MAX: (libc)General Limits.
  34. * CIGNORE: (libc)Control Modes.
  35. * CLK_TCK: (libc)Processor Time.
  36. * CLOCAL: (libc)Control Modes.
  37. * CLOCKS_PER_SEC: (libc)CPU Time.
  38. * CLOCK_BOOTTIME: (libc)Getting the Time.
  39. * CLOCK_BOOTTIME_ALARM: (libc)Getting the Time.
  40. * CLOCK_MONOTONIC: (libc)Getting the Time.
  41. * CLOCK_MONOTONIC_COARSE: (libc)Getting the Time.
  42. * CLOCK_MONOTONIC_RAW: (libc)Getting the Time.
  43. * CLOCK_PROCESS_CPUTIME_ID: (libc)Getting the Time.
  44. * CLOCK_REALTIME: (libc)Getting the Time.
  45. * CLOCK_REALTIME_ALARM: (libc)Getting the Time.
  46. * CLOCK_REALTIME_COARSE: (libc)Getting the Time.
  47. * CLOCK_TAI: (libc)Getting the Time.
  48. * CLOCK_THREAD_CPUTIME_ID: (libc)Getting the Time.
  49. * COLL_WEIGHTS_MAX: (libc)Utility Limits.
  50. * CPU_ALLOC: (libc)CPU Affinity.
  51. * CPU_ALLOC_SIZE: (libc)CPU Affinity.
  52. * CPU_AND: (libc)CPU Affinity.
  53. * CPU_AND_S: (libc)CPU Affinity.
  54. * CPU_CLR: (libc)CPU Affinity.
  55. * CPU_CLR_S: (libc)CPU Affinity.
  56. * CPU_COUNT: (libc)CPU Affinity.
  57. * CPU_COUNT_S: (libc)CPU Affinity.
  58. * CPU_EQUAL: (libc)CPU Affinity.
  59. * CPU_EQUAL_S: (libc)CPU Affinity.
  60. * CPU_FEATURE_ACTIVE: (libc)X86.
  61. * CPU_FEATURE_PRESENT: (libc)X86.
  62. * CPU_FREE: (libc)CPU Affinity.
  63. * CPU_ISSET: (libc)CPU Affinity.
  64. * CPU_ISSET_S: (libc)CPU Affinity.
  65. * CPU_OR: (libc)CPU Affinity.
  66. * CPU_OR_S: (libc)CPU Affinity.
  67. * CPU_SET: (libc)CPU Affinity.
  68. * CPU_SETSIZE: (libc)CPU Affinity.
  69. * CPU_SET_S: (libc)CPU Affinity.
  70. * CPU_XOR: (libc)CPU Affinity.
  71. * CPU_XOR_S: (libc)CPU Affinity.
  72. * CPU_ZERO: (libc)CPU Affinity.
  73. * CPU_ZERO_S: (libc)CPU Affinity.
  74. * CREAD: (libc)Control Modes.
  75. * CRTS_IFLOW: (libc)Control Modes.
  76. * CS5: (libc)Control Modes.
  77. * CS6: (libc)Control Modes.
  78. * CS7: (libc)Control Modes.
  79. * CS8: (libc)Control Modes.
  80. * CSIZE: (libc)Control Modes.
  81. * CSTOPB: (libc)Control Modes.
  82. * DLFO_EH_SEGMENT_TYPE: (libc)Dynamic Linker Introspection.
  83. * DLFO_STRUCT_HAS_EH_COUNT: (libc)Dynamic Linker Introspection.
  84. * DLFO_STRUCT_HAS_EH_DBASE: (libc)Dynamic Linker Introspection.
  85. * DTTOIF: (libc)Directory Entries.
  86. * E2BIG: (libc)Error Codes.
  87. * EACCES: (libc)Error Codes.
  88. * EADDRINUSE: (libc)Error Codes.
  89. * EADDRNOTAVAIL: (libc)Error Codes.
  90. * EADV: (libc)Error Codes.
  91. * EAFNOSUPPORT: (libc)Error Codes.
  92. * EAGAIN: (libc)Error Codes.
  93. * EALREADY: (libc)Error Codes.
  94. * EAUTH: (libc)Error Codes.
  95. * EBACKGROUND: (libc)Error Codes.
  96. * EBADE: (libc)Error Codes.
  97. * EBADF: (libc)Error Codes.
  98. * EBADFD: (libc)Error Codes.
  99. * EBADMSG: (libc)Error Codes.
  100. * EBADR: (libc)Error Codes.
  101. * EBADRPC: (libc)Error Codes.
  102. * EBADRQC: (libc)Error Codes.
  103. * EBADSLT: (libc)Error Codes.
  104. * EBFONT: (libc)Error Codes.
  105. * EBUSY: (libc)Error Codes.
  106. * ECANCELED: (libc)Error Codes.
  107. * ECHILD: (libc)Error Codes.
  108. * ECHO: (libc)Local Modes.
  109. * ECHOCTL: (libc)Local Modes.
  110. * ECHOE: (libc)Local Modes.
  111. * ECHOK: (libc)Local Modes.
  112. * ECHOKE: (libc)Local Modes.
  113. * ECHONL: (libc)Local Modes.
  114. * ECHOPRT: (libc)Local Modes.
  115. * ECHRNG: (libc)Error Codes.
  116. * ECOMM: (libc)Error Codes.
  117. * ECONNABORTED: (libc)Error Codes.
  118. * ECONNREFUSED: (libc)Error Codes.
  119. * ECONNRESET: (libc)Error Codes.
  120. * ED: (libc)Error Codes.
  121. * EDEADLK: (libc)Error Codes.
  122. * EDEADLOCK: (libc)Error Codes.
  123. * EDESTADDRREQ: (libc)Error Codes.
  124. * EDIED: (libc)Error Codes.
  125. * EDOM: (libc)Error Codes.
  126. * EDOTDOT: (libc)Error Codes.
  127. * EDQUOT: (libc)Error Codes.
  128. * EEXIST: (libc)Error Codes.
  129. * EFAULT: (libc)Error Codes.
  130. * EFBIG: (libc)Error Codes.
  131. * EFTYPE: (libc)Error Codes.
  132. * EGRATUITOUS: (libc)Error Codes.
  133. * EGREGIOUS: (libc)Error Codes.
  134. * EHOSTDOWN: (libc)Error Codes.
  135. * EHOSTUNREACH: (libc)Error Codes.
  136. * EHWPOISON: (libc)Error Codes.
  137. * EIDRM: (libc)Error Codes.
  138. * EIEIO: (libc)Error Codes.
  139. * EILSEQ: (libc)Error Codes.
  140. * EINPROGRESS: (libc)Error Codes.
  141. * EINTR: (libc)Error Codes.
  142. * EINVAL: (libc)Error Codes.
  143. * EIO: (libc)Error Codes.
  144. * EISCONN: (libc)Error Codes.
  145. * EISDIR: (libc)Error Codes.
  146. * EISNAM: (libc)Error Codes.
  147. * EKEYEXPIRED: (libc)Error Codes.
  148. * EKEYREJECTED: (libc)Error Codes.
  149. * EKEYREVOKED: (libc)Error Codes.
  150. * EL2HLT: (libc)Error Codes.
  151. * EL2NSYNC: (libc)Error Codes.
  152. * EL3HLT: (libc)Error Codes.
  153. * EL3RST: (libc)Error Codes.
  154. * ELIBACC: (libc)Error Codes.
  155. * ELIBBAD: (libc)Error Codes.
  156. * ELIBEXEC: (libc)Error Codes.
  157. * ELIBMAX: (libc)Error Codes.
  158. * ELIBSCN: (libc)Error Codes.
  159. * ELNRNG: (libc)Error Codes.
  160. * ELOOP: (libc)Error Codes.
  161. * EMEDIUMTYPE: (libc)Error Codes.
  162. * EMFILE: (libc)Error Codes.
  163. * EMLINK: (libc)Error Codes.
  164. * EMSGSIZE: (libc)Error Codes.
  165. * EMULTIHOP: (libc)Error Codes.
  166. * ENAMETOOLONG: (libc)Error Codes.
  167. * ENAVAIL: (libc)Error Codes.
  168. * ENEEDAUTH: (libc)Error Codes.
  169. * ENETDOWN: (libc)Error Codes.
  170. * ENETRESET: (libc)Error Codes.
  171. * ENETUNREACH: (libc)Error Codes.
  172. * ENFILE: (libc)Error Codes.
  173. * ENOANO: (libc)Error Codes.
  174. * ENOBUFS: (libc)Error Codes.
  175. * ENOCSI: (libc)Error Codes.
  176. * ENODATA: (libc)Error Codes.
  177. * ENODEV: (libc)Error Codes.
  178. * ENOENT: (libc)Error Codes.
  179. * ENOEXEC: (libc)Error Codes.
  180. * ENOKEY: (libc)Error Codes.
  181. * ENOLCK: (libc)Error Codes.
  182. * ENOLINK: (libc)Error Codes.
  183. * ENOMEDIUM: (libc)Error Codes.
  184. * ENOMEM: (libc)Error Codes.
  185. * ENOMSG: (libc)Error Codes.
  186. * ENONET: (libc)Error Codes.
  187. * ENOPKG: (libc)Error Codes.
  188. * ENOPROTOOPT: (libc)Error Codes.
  189. * ENOSPC: (libc)Error Codes.
  190. * ENOSR: (libc)Error Codes.
  191. * ENOSTR: (libc)Error Codes.
  192. * ENOSYS: (libc)Error Codes.
  193. * ENOTBLK: (libc)Error Codes.
  194. * ENOTCONN: (libc)Error Codes.
  195. * ENOTDIR: (libc)Error Codes.
  196. * ENOTEMPTY: (libc)Error Codes.
  197. * ENOTNAM: (libc)Error Codes.
  198. * ENOTRECOVERABLE: (libc)Error Codes.
  199. * ENOTSOCK: (libc)Error Codes.
  200. * ENOTSUP: (libc)Error Codes.
  201. * ENOTTY: (libc)Error Codes.
  202. * ENOTUNIQ: (libc)Error Codes.
  203. * ENXIO: (libc)Error Codes.
  204. * EOF: (libc)EOF and Errors.
  205. * EOPNOTSUPP: (libc)Error Codes.
  206. * EOVERFLOW: (libc)Error Codes.
  207. * EOWNERDEAD: (libc)Error Codes.
  208. * EPERM: (libc)Error Codes.
  209. * EPFNOSUPPORT: (libc)Error Codes.
  210. * EPIPE: (libc)Error Codes.
  211. * EPROCLIM: (libc)Error Codes.
  212. * EPROCUNAVAIL: (libc)Error Codes.
  213. * EPROGMISMATCH: (libc)Error Codes.
  214. * EPROGUNAVAIL: (libc)Error Codes.
  215. * EPROTO: (libc)Error Codes.
  216. * EPROTONOSUPPORT: (libc)Error Codes.
  217. * EPROTOTYPE: (libc)Error Codes.
  218. * EQUIV_CLASS_MAX: (libc)Utility Limits.
  219. * ERANGE: (libc)Error Codes.
  220. * EREMCHG: (libc)Error Codes.
  221. * EREMOTE: (libc)Error Codes.
  222. * EREMOTEIO: (libc)Error Codes.
  223. * ERESTART: (libc)Error Codes.
  224. * ERFKILL: (libc)Error Codes.
  225. * EROFS: (libc)Error Codes.
  226. * ERPCMISMATCH: (libc)Error Codes.
  227. * ESHUTDOWN: (libc)Error Codes.
  228. * ESOCKTNOSUPPORT: (libc)Error Codes.
  229. * ESPIPE: (libc)Error Codes.
  230. * ESRCH: (libc)Error Codes.
  231. * ESRMNT: (libc)Error Codes.
  232. * ESTALE: (libc)Error Codes.
  233. * ESTRPIPE: (libc)Error Codes.
  234. * ETIME: (libc)Error Codes.
  235. * ETIMEDOUT: (libc)Error Codes.
  236. * ETOOMANYREFS: (libc)Error Codes.
  237. * ETXTBSY: (libc)Error Codes.
  238. * EUCLEAN: (libc)Error Codes.
  239. * EUNATCH: (libc)Error Codes.
  240. * EUSERS: (libc)Error Codes.
  241. * EWOULDBLOCK: (libc)Error Codes.
  242. * EXDEV: (libc)Error Codes.
  243. * EXFULL: (libc)Error Codes.
  244. * EXIT_FAILURE: (libc)Exit Status.
  245. * EXIT_SUCCESS: (libc)Exit Status.
  246. * EXPR_NEST_MAX: (libc)Utility Limits.
  247. * FD_CLOEXEC: (libc)Descriptor Flags.
  248. * FD_CLR: (libc)Waiting for I/O.
  249. * FD_ISSET: (libc)Waiting for I/O.
  250. * FD_SET: (libc)Waiting for I/O.
  251. * FD_SETSIZE: (libc)Waiting for I/O.
  252. * FD_ZERO: (libc)Waiting for I/O.
  253. * FE_SNANS_ALWAYS_SIGNAL: (libc)Infinity and NaN.
  254. * FILENAME_MAX: (libc)Limits for Files.
  255. * FLUSHO: (libc)Local Modes.
  256. * FOPEN_MAX: (libc)Opening Streams.
  257. * FP_ILOGB0: (libc)Exponents and Logarithms.
  258. * FP_ILOGBNAN: (libc)Exponents and Logarithms.
  259. * FP_LLOGB0: (libc)Exponents and Logarithms.
  260. * FP_LLOGBNAN: (libc)Exponents and Logarithms.
  261. * F_DUPFD: (libc)Duplicating Descriptors.
  262. * F_GETFD: (libc)Descriptor Flags.
  263. * F_GETFL: (libc)Getting File Status Flags.
  264. * F_GETLK: (libc)File Locks.
  265. * F_GETOWN: (libc)Interrupt Input.
  266. * F_OFD_GETLK: (libc)Open File Description Locks.
  267. * F_OFD_SETLK: (libc)Open File Description Locks.
  268. * F_OFD_SETLKW: (libc)Open File Description Locks.
  269. * F_OK: (libc)Testing File Access.
  270. * F_SETFD: (libc)Descriptor Flags.
  271. * F_SETFL: (libc)Getting File Status Flags.
  272. * F_SETLK: (libc)File Locks.
  273. * F_SETLKW: (libc)File Locks.
  274. * F_SETOWN: (libc)Interrupt Input.
  275. * HUGE_VAL: (libc)Math Error Reporting.
  276. * HUGE_VALF: (libc)Math Error Reporting.
  277. * HUGE_VALL: (libc)Math Error Reporting.
  278. * HUGE_VAL_FN: (libc)Math Error Reporting.
  279. * HUGE_VAL_FNx: (libc)Math Error Reporting.
  280. * HUPCL: (libc)Control Modes.
  281. * I: (libc)Complex Numbers.
  282. * ICANON: (libc)Local Modes.
  283. * ICRNL: (libc)Input Modes.
  284. * IEXTEN: (libc)Local Modes.
  285. * IFNAMSIZ: (libc)Interface Naming.
  286. * IFTODT: (libc)Directory Entries.
  287. * IGNBRK: (libc)Input Modes.
  288. * IGNCR: (libc)Input Modes.
  289. * IGNPAR: (libc)Input Modes.
  290. * IMAXBEL: (libc)Input Modes.
  291. * INADDR_ANY: (libc)Host Address Data Type.
  292. * INADDR_BROADCAST: (libc)Host Address Data Type.
  293. * INADDR_LOOPBACK: (libc)Host Address Data Type.
  294. * INADDR_NONE: (libc)Host Address Data Type.
  295. * INFINITY: (libc)Infinity and NaN.
  296. * INLCR: (libc)Input Modes.
  297. * INPCK: (libc)Input Modes.
  298. * IPPORT_RESERVED: (libc)Ports.
  299. * IPPORT_USERRESERVED: (libc)Ports.
  300. * ISIG: (libc)Local Modes.
  301. * ISTRIP: (libc)Input Modes.
  302. * IXANY: (libc)Input Modes.
  303. * IXOFF: (libc)Input Modes.
  304. * IXON: (libc)Input Modes.
  305. * LINE_MAX: (libc)Utility Limits.
  306. * LINK_MAX: (libc)Limits for Files.
  307. * L_ctermid: (libc)Identifying the Terminal.
  308. * L_cuserid: (libc)Who Logged In.
  309. * L_tmpnam: (libc)Temporary Files.
  310. * MAXNAMLEN: (libc)Limits for Files.
  311. * MAXSYMLINKS: (libc)Symbolic Links.
  312. * MAX_CANON: (libc)Limits for Files.
  313. * MAX_INPUT: (libc)Limits for Files.
  314. * MB_CUR_MAX: (libc)Selecting the Conversion.
  315. * MB_LEN_MAX: (libc)Selecting the Conversion.
  316. * MDMBUF: (libc)Control Modes.
  317. * MSG_DONTROUTE: (libc)Socket Data Options.
  318. * MSG_OOB: (libc)Socket Data Options.
  319. * MSG_PEEK: (libc)Socket Data Options.
  320. * NAME_MAX: (libc)Limits for Files.
  321. * NAN: (libc)Infinity and NaN.
  322. * NCCS: (libc)Mode Data Types.
  323. * NGROUPS_MAX: (libc)General Limits.
  324. * NOFLSH: (libc)Local Modes.
  325. * NOKERNINFO: (libc)Local Modes.
  326. * NSIG: (libc)Standard Signals.
  327. * NULL: (libc)Null Pointer Constant.
  328. * ONLCR: (libc)Output Modes.
  329. * ONOEOT: (libc)Output Modes.
  330. * OPEN_MAX: (libc)General Limits.
  331. * OPOST: (libc)Output Modes.
  332. * OXTABS: (libc)Output Modes.
  333. * O_ACCMODE: (libc)Access Modes.
  334. * O_APPEND: (libc)Operating Modes.
  335. * O_ASYNC: (libc)Operating Modes.
  336. * O_CREAT: (libc)Open-time Flags.
  337. * O_DIRECTORY: (libc)Open-time Flags.
  338. * O_EXCL: (libc)Open-time Flags.
  339. * O_EXEC: (libc)Access Modes.
  340. * O_EXLOCK: (libc)Open-time Flags.
  341. * O_FSYNC: (libc)Operating Modes.
  342. * O_IGNORE_CTTY: (libc)Open-time Flags.
  343. * O_NDELAY: (libc)Operating Modes.
  344. * O_NOATIME: (libc)Operating Modes.
  345. * O_NOCTTY: (libc)Open-time Flags.
  346. * O_NOFOLLOW: (libc)Open-time Flags.
  347. * O_NOLINK: (libc)Open-time Flags.
  348. * O_NONBLOCK: (libc)Open-time Flags.
  349. * O_NONBLOCK: (libc)Operating Modes.
  350. * O_NOTRANS: (libc)Open-time Flags.
  351. * O_PATH: (libc)Access Modes.
  352. * O_RDONLY: (libc)Access Modes.
  353. * O_RDWR: (libc)Access Modes.
  354. * O_READ: (libc)Access Modes.
  355. * O_SHLOCK: (libc)Open-time Flags.
  356. * O_SYNC: (libc)Operating Modes.
  357. * O_TMPFILE: (libc)Open-time Flags.
  358. * O_TRUNC: (libc)Open-time Flags.
  359. * O_WRITE: (libc)Access Modes.
  360. * O_WRONLY: (libc)Access Modes.
  361. * PARENB: (libc)Control Modes.
  362. * PARMRK: (libc)Input Modes.
  363. * PARODD: (libc)Control Modes.
  364. * PATH_MAX: (libc)Limits for Files.
  365. * PA_FLAG_MASK: (libc)Parsing a Template String.
  366. * PENDIN: (libc)Local Modes.
  367. * PF_FILE: (libc)Local Namespace Details.
  368. * PF_INET6: (libc)Internet Namespace.
  369. * PF_INET: (libc)Internet Namespace.
  370. * PF_LOCAL: (libc)Local Namespace Details.
  371. * PF_UNIX: (libc)Local Namespace Details.
  372. * PIPE_BUF: (libc)Limits for Files.
  373. * PTHREAD_ATTR_NO_SIGMASK_NP: (libc)Initial Thread Signal Mask.
  374. * P_tmpdir: (libc)Temporary Files.
  375. * RAND_MAX: (libc)ISO Random.
  376. * RE_DUP_MAX: (libc)General Limits.
  377. * RLIM_INFINITY: (libc)Limits on Resources.
  378. * RSEQ_SIG: (libc)Restartable Sequences.
  379. * R_OK: (libc)Testing File Access.
  380. * SA_NOCLDSTOP: (libc)Flags for Sigaction.
  381. * SA_NOCLDWAIT: (libc)Flags for Sigaction.
  382. * SA_NODEFER: (libc)Flags for Sigaction.
  383. * SA_ONSTACK: (libc)Flags for Sigaction.
  384. * SA_RESETHAND: (libc)Flags for Sigaction.
  385. * SA_RESTART: (libc)Flags for Sigaction.
  386. * SA_SIGINFO: (libc)Flags for Sigaction.
  387. * SEEK_CUR: (libc)File Positioning.
  388. * SEEK_END: (libc)File Positioning.
  389. * SEEK_SET: (libc)File Positioning.
  390. * SIGABRT: (libc)Program Error Signals.
  391. * SIGALRM: (libc)Alarm Signals.
  392. * SIGBUS: (libc)Program Error Signals.
  393. * SIGCHLD: (libc)Job Control Signals.
  394. * SIGCLD: (libc)Job Control Signals.
  395. * SIGCONT: (libc)Job Control Signals.
  396. * SIGEMT: (libc)Program Error Signals.
  397. * SIGFPE: (libc)Program Error Signals.
  398. * SIGHUP: (libc)Termination Signals.
  399. * SIGILL: (libc)Program Error Signals.
  400. * SIGINFO: (libc)Miscellaneous Signals.
  401. * SIGINT: (libc)Termination Signals.
  402. * SIGIO: (libc)Asynchronous I/O Signals.
  403. * SIGIOT: (libc)Program Error Signals.
  404. * SIGKILL: (libc)Termination Signals.
  405. * SIGLOST: (libc)Operation Error Signals.
  406. * SIGPIPE: (libc)Operation Error Signals.
  407. * SIGPOLL: (libc)Asynchronous I/O Signals.
  408. * SIGPROF: (libc)Alarm Signals.
  409. * SIGPWR: (libc)Miscellaneous Signals.
  410. * SIGQUIT: (libc)Termination Signals.
  411. * SIGSEGV: (libc)Program Error Signals.
  412. * SIGSTKFLT: (libc)Program Error Signals.
  413. * SIGSTOP: (libc)Job Control Signals.
  414. * SIGSYS: (libc)Program Error Signals.
  415. * SIGTERM: (libc)Termination Signals.
  416. * SIGTRAP: (libc)Program Error Signals.
  417. * SIGTSTP: (libc)Job Control Signals.
  418. * SIGTTIN: (libc)Job Control Signals.
  419. * SIGTTOU: (libc)Job Control Signals.
  420. * SIGURG: (libc)Asynchronous I/O Signals.
  421. * SIGUSR1: (libc)Miscellaneous Signals.
  422. * SIGUSR2: (libc)Miscellaneous Signals.
  423. * SIGVTALRM: (libc)Alarm Signals.
  424. * SIGWINCH: (libc)Miscellaneous Signals.
  425. * SIGXCPU: (libc)Operation Error Signals.
  426. * SIGXFSZ: (libc)Operation Error Signals.
  427. * SIG_ERR: (libc)Basic Signal Handling.
  428. * SNAN: (libc)Infinity and NaN.
  429. * SNANF: (libc)Infinity and NaN.
  430. * SNANFN: (libc)Infinity and NaN.
  431. * SNANFNx: (libc)Infinity and NaN.
  432. * SNANL: (libc)Infinity and NaN.
  433. * SOCK_DGRAM: (libc)Communication Styles.
  434. * SOCK_RAW: (libc)Communication Styles.
  435. * SOCK_RDM: (libc)Communication Styles.
  436. * SOCK_SEQPACKET: (libc)Communication Styles.
  437. * SOCK_STREAM: (libc)Communication Styles.
  438. * SOL_SOCKET: (libc)Socket-Level Options.
  439. * SPEED_MAX: (libc)Line Speed.
  440. * SSIZE_MAX: (libc)General Limits.
  441. * STREAM_MAX: (libc)General Limits.
  442. * SUN_LEN: (libc)Local Namespace Details.
  443. * S_IFMT: (libc)Testing File Type.
  444. * S_ISBLK: (libc)Testing File Type.
  445. * S_ISCHR: (libc)Testing File Type.
  446. * S_ISDIR: (libc)Testing File Type.
  447. * S_ISFIFO: (libc)Testing File Type.
  448. * S_ISLNK: (libc)Testing File Type.
  449. * S_ISREG: (libc)Testing File Type.
  450. * S_ISSOCK: (libc)Testing File Type.
  451. * S_TYPEISMQ: (libc)Testing File Type.
  452. * S_TYPEISSEM: (libc)Testing File Type.
  453. * S_TYPEISSHM: (libc)Testing File Type.
  454. * TIME_UTC: (libc)Getting the Time.
  455. * TMP_MAX: (libc)Temporary Files.
  456. * TOSTOP: (libc)Local Modes.
  457. * TZNAME_MAX: (libc)General Limits.
  458. * VDISCARD: (libc)Other Special.
  459. * VDSUSP: (libc)Signal Characters.
  460. * VEOF: (libc)Editing Characters.
  461. * VEOL2: (libc)Editing Characters.
  462. * VEOL: (libc)Editing Characters.
  463. * VERASE: (libc)Editing Characters.
  464. * VINTR: (libc)Signal Characters.
  465. * VKILL: (libc)Editing Characters.
  466. * VLNEXT: (libc)Other Special.
  467. * VMIN: (libc)Noncanonical Input.
  468. * VQUIT: (libc)Signal Characters.
  469. * VREPRINT: (libc)Editing Characters.
  470. * VSTART: (libc)Start/Stop Characters.
  471. * VSTATUS: (libc)Other Special.
  472. * VSTOP: (libc)Start/Stop Characters.
  473. * VSUSP: (libc)Signal Characters.
  474. * VTIME: (libc)Noncanonical Input.
  475. * VWERASE: (libc)Editing Characters.
  476. * WCHAR_MAX: (libc)Extended Char Intro.
  477. * WCHAR_MIN: (libc)Extended Char Intro.
  478. * WCOREDUMP: (libc)Process Completion Status.
  479. * WEOF: (libc)EOF and Errors.
  480. * WEOF: (libc)Extended Char Intro.
  481. * WEXITSTATUS: (libc)Process Completion Status.
  482. * WIFEXITED: (libc)Process Completion Status.
  483. * WIFSIGNALED: (libc)Process Completion Status.
  484. * WIFSTOPPED: (libc)Process Completion Status.
  485. * WSTOPSIG: (libc)Process Completion Status.
  486. * WTERMSIG: (libc)Process Completion Status.
  487. * W_OK: (libc)Testing File Access.
  488. * X_OK: (libc)Testing File Access.
  489. * _Complex_I: (libc)Complex Numbers.
  490. * _Exit: (libc)Termination Internals.
  491. * _Fork: (libc)Creating a Process.
  492. * _IOFBF: (libc)Controlling Buffering.
  493. * _IOLBF: (libc)Controlling Buffering.
  494. * _IONBF: (libc)Controlling Buffering.
  495. * _Imaginary_I: (libc)Complex Numbers.
  496. * _PATH_UTMP: (libc)Manipulating the Database.
  497. * _PATH_WTMP: (libc)Manipulating the Database.
  498. * _POSIX2_C_DEV: (libc)System Options.
  499. * _POSIX2_C_VERSION: (libc)Version Supported.
  500. * _POSIX2_FORT_DEV: (libc)System Options.
  501. * _POSIX2_FORT_RUN: (libc)System Options.
  502. * _POSIX2_LOCALEDEF: (libc)System Options.
  503. * _POSIX2_SW_DEV: (libc)System Options.
  504. * _POSIX_CHOWN_RESTRICTED: (libc)Options for Files.
  505. * _POSIX_JOB_CONTROL: (libc)System Options.
  506. * _POSIX_NO_TRUNC: (libc)Options for Files.
  507. * _POSIX_SAVED_IDS: (libc)System Options.
  508. * _POSIX_VDISABLE: (libc)Options for Files.
  509. * _POSIX_VERSION: (libc)Version Supported.
  510. * __fbufsize: (libc)Controlling Buffering.
  511. * __flbf: (libc)Controlling Buffering.
  512. * __fpending: (libc)Controlling Buffering.
  513. * __fpurge: (libc)Flushing Buffers.
  514. * __freadable: (libc)Opening Streams.
  515. * __freading: (libc)Opening Streams.
  516. * __fsetlocking: (libc)Streams and Threads.
  517. * __fwritable: (libc)Opening Streams.
  518. * __fwriting: (libc)Opening Streams.
  519. * __gconv_end_fct: (libc)glibc iconv Implementation.
  520. * __gconv_fct: (libc)glibc iconv Implementation.
  521. * __gconv_init_fct: (libc)glibc iconv Implementation.
  522. * __ppc_get_timebase: (libc)PowerPC.
  523. * __ppc_get_timebase_freq: (libc)PowerPC.
  524. * __ppc_mdoio: (libc)PowerPC.
  525. * __ppc_mdoom: (libc)PowerPC.
  526. * __ppc_set_ppr_low: (libc)PowerPC.
  527. * __ppc_set_ppr_med: (libc)PowerPC.
  528. * __ppc_set_ppr_med_high: (libc)PowerPC.
  529. * __ppc_set_ppr_med_low: (libc)PowerPC.
  530. * __ppc_set_ppr_very_low: (libc)PowerPC.
  531. * __ppc_yield: (libc)PowerPC.
  532. * __riscv_flush_icache: (libc)RISC-V.
  533. * __va_copy: (libc)Argument Macros.
  534. * __x86_get_cpuid_feature_leaf: (libc)X86.
  535. * _dl_find_object: (libc)Dynamic Linker Introspection.
  536. * _exit: (libc)Termination Internals.
  537. * _flushlbf: (libc)Flushing Buffers.
  538. * _tolower: (libc)Case Conversion.
  539. * _toupper: (libc)Case Conversion.
  540. * a64l: (libc)Encode Binary Data.
  541. * abort: (libc)Aborting a Program.
  542. * abs: (libc)Absolute Value.
  543. * accept: (libc)Accepting Connections.
  544. * access: (libc)Testing File Access.
  545. * acos: (libc)Inverse Trig Functions.
  546. * acosf: (libc)Inverse Trig Functions.
  547. * acosfN: (libc)Inverse Trig Functions.
  548. * acosfNx: (libc)Inverse Trig Functions.
  549. * acosh: (libc)Hyperbolic Functions.
  550. * acoshf: (libc)Hyperbolic Functions.
  551. * acoshfN: (libc)Hyperbolic Functions.
  552. * acoshfNx: (libc)Hyperbolic Functions.
  553. * acoshl: (libc)Hyperbolic Functions.
  554. * acosl: (libc)Inverse Trig Functions.
  555. * acospi: (libc)Inverse Trig Functions.
  556. * acospif: (libc)Inverse Trig Functions.
  557. * acospifN: (libc)Inverse Trig Functions.
  558. * acospifNx: (libc)Inverse Trig Functions.
  559. * acospil: (libc)Inverse Trig Functions.
  560. * addmntent: (libc)mtab.
  561. * addseverity: (libc)Adding Severity Classes.
  562. * adjtime: (libc)Setting and Adjusting the Time.
  563. * adjtimex: (libc)Setting and Adjusting the Time.
  564. * aio_cancel64: (libc)Cancel AIO Operations.
  565. * aio_cancel: (libc)Cancel AIO Operations.
  566. * aio_error64: (libc)Status of AIO Operations.
  567. * aio_error: (libc)Status of AIO Operations.
  568. * aio_fsync64: (libc)Synchronizing AIO Operations.
  569. * aio_fsync: (libc)Synchronizing AIO Operations.
  570. * aio_init: (libc)Configuration of AIO.
  571. * aio_read64: (libc)Asynchronous Reads/Writes.
  572. * aio_read: (libc)Asynchronous Reads/Writes.
  573. * aio_return64: (libc)Status of AIO Operations.
  574. * aio_return: (libc)Status of AIO Operations.
  575. * aio_suspend64: (libc)Synchronizing AIO Operations.
  576. * aio_suspend: (libc)Synchronizing AIO Operations.
  577. * aio_write64: (libc)Asynchronous Reads/Writes.
  578. * aio_write: (libc)Asynchronous Reads/Writes.
  579. * alarm: (libc)Setting an Alarm.
  580. * aligned_alloc: (libc)Aligned Memory Blocks.
  581. * alloca: (libc)Variable Size Automatic.
  582. * alphasort64: (libc)Scanning Directory Content.
  583. * alphasort: (libc)Scanning Directory Content.
  584. * arc4random: (libc)High Quality Random.
  585. * arc4random_buf: (libc)High Quality Random.
  586. * arc4random_uniform: (libc)High Quality Random.
  587. * argp_error: (libc)Argp Helper Functions.
  588. * argp_failure: (libc)Argp Helper Functions.
  589. * argp_help: (libc)Argp Help.
  590. * argp_parse: (libc)Argp.
  591. * argp_state_help: (libc)Argp Helper Functions.
  592. * argp_usage: (libc)Argp Helper Functions.
  593. * argz_add: (libc)Argz Functions.
  594. * argz_add_sep: (libc)Argz Functions.
  595. * argz_append: (libc)Argz Functions.
  596. * argz_count: (libc)Argz Functions.
  597. * argz_create: (libc)Argz Functions.
  598. * argz_create_sep: (libc)Argz Functions.
  599. * argz_delete: (libc)Argz Functions.
  600. * argz_extract: (libc)Argz Functions.
  601. * argz_insert: (libc)Argz Functions.
  602. * argz_next: (libc)Argz Functions.
  603. * argz_replace: (libc)Argz Functions.
  604. * argz_stringify: (libc)Argz Functions.
  605. * asctime: (libc)Formatting Calendar Time.
  606. * asctime_r: (libc)Formatting Calendar Time.
  607. * asin: (libc)Inverse Trig Functions.
  608. * asinf: (libc)Inverse Trig Functions.
  609. * asinfN: (libc)Inverse Trig Functions.
  610. * asinfNx: (libc)Inverse Trig Functions.
  611. * asinh: (libc)Hyperbolic Functions.
  612. * asinhf: (libc)Hyperbolic Functions.
  613. * asinhfN: (libc)Hyperbolic Functions.
  614. * asinhfNx: (libc)Hyperbolic Functions.
  615. * asinhl: (libc)Hyperbolic Functions.
  616. * asinl: (libc)Inverse Trig Functions.
  617. * asinpi: (libc)Inverse Trig Functions.
  618. * asinpif: (libc)Inverse Trig Functions.
  619. * asinpifN: (libc)Inverse Trig Functions.
  620. * asinpifNx: (libc)Inverse Trig Functions.
  621. * asinpil: (libc)Inverse Trig Functions.
  622. * asprintf: (libc)Dynamic Output.
  623. * assert: (libc)Consistency Checking.
  624. * assert_perror: (libc)Consistency Checking.
  625. * atan2: (libc)Inverse Trig Functions.
  626. * atan2f: (libc)Inverse Trig Functions.
  627. * atan2fN: (libc)Inverse Trig Functions.
  628. * atan2fNx: (libc)Inverse Trig Functions.
  629. * atan2l: (libc)Inverse Trig Functions.
  630. * atan2pi: (libc)Inverse Trig Functions.
  631. * atan2pif: (libc)Inverse Trig Functions.
  632. * atan2pifN: (libc)Inverse Trig Functions.
  633. * atan2pifNx: (libc)Inverse Trig Functions.
  634. * atan2pil: (libc)Inverse Trig Functions.
  635. * atan: (libc)Inverse Trig Functions.
  636. * atanf: (libc)Inverse Trig Functions.
  637. * atanfN: (libc)Inverse Trig Functions.
  638. * atanfNx: (libc)Inverse Trig Functions.
  639. * atanh: (libc)Hyperbolic Functions.
  640. * atanhf: (libc)Hyperbolic Functions.
  641. * atanhfN: (libc)Hyperbolic Functions.
  642. * atanhfNx: (libc)Hyperbolic Functions.
  643. * atanhl: (libc)Hyperbolic Functions.
  644. * atanl: (libc)Inverse Trig Functions.
  645. * atanpi: (libc)Inverse Trig Functions.
  646. * atanpif: (libc)Inverse Trig Functions.
  647. * atanpifN: (libc)Inverse Trig Functions.
  648. * atanpifNx: (libc)Inverse Trig Functions.
  649. * atanpil: (libc)Inverse Trig Functions.
  650. * atexit: (libc)Cleanups on Exit.
  651. * atof: (libc)Parsing of Floats.
  652. * atoi: (libc)Parsing of Integers.
  653. * atol: (libc)Parsing of Integers.
  654. * atoll: (libc)Parsing of Integers.
  655. * backtrace: (libc)Backtraces.
  656. * backtrace_symbols: (libc)Backtraces.
  657. * backtrace_symbols_fd: (libc)Backtraces.
  658. * basename: (libc)Finding Tokens in a String.
  659. * basename: (libc)Finding Tokens in a String.
  660. * bcmp: (libc)String/Array Comparison.
  661. * bcopy: (libc)Copying Strings and Arrays.
  662. * bind: (libc)Setting Address.
  663. * bind_textdomain_codeset: (libc)Charset conversion in gettext.
  664. * bindtextdomain: (libc)Locating gettext catalog.
  665. * brk: (libc)Resizing the Data Segment.
  666. * bsearch: (libc)Array Search Function.
  667. * btowc: (libc)Converting a Character.
  668. * bzero: (libc)Copying Strings and Arrays.
  669. * cabs: (libc)Absolute Value.
  670. * cabsf: (libc)Absolute Value.
  671. * cabsfN: (libc)Absolute Value.
  672. * cabsfNx: (libc)Absolute Value.
  673. * cabsl: (libc)Absolute Value.
  674. * cacos: (libc)Inverse Trig Functions.
  675. * cacosf: (libc)Inverse Trig Functions.
  676. * cacosfN: (libc)Inverse Trig Functions.
  677. * cacosfNx: (libc)Inverse Trig Functions.
  678. * cacosh: (libc)Hyperbolic Functions.
  679. * cacoshf: (libc)Hyperbolic Functions.
  680. * cacoshfN: (libc)Hyperbolic Functions.
  681. * cacoshfNx: (libc)Hyperbolic Functions.
  682. * cacoshl: (libc)Hyperbolic Functions.
  683. * cacosl: (libc)Inverse Trig Functions.
  684. * call_once: (libc)Call Once.
  685. * calloc: (libc)Allocating Cleared Space.
  686. * canonicalize: (libc)FP Bit Twiddling.
  687. * canonicalize_file_name: (libc)Symbolic Links.
  688. * canonicalizef: (libc)FP Bit Twiddling.
  689. * canonicalizefN: (libc)FP Bit Twiddling.
  690. * canonicalizefNx: (libc)FP Bit Twiddling.
  691. * canonicalizel: (libc)FP Bit Twiddling.
  692. * carg: (libc)Operations on Complex.
  693. * cargf: (libc)Operations on Complex.
  694. * cargfN: (libc)Operations on Complex.
  695. * cargfNx: (libc)Operations on Complex.
  696. * cargl: (libc)Operations on Complex.
  697. * casin: (libc)Inverse Trig Functions.
  698. * casinf: (libc)Inverse Trig Functions.
  699. * casinfN: (libc)Inverse Trig Functions.
  700. * casinfNx: (libc)Inverse Trig Functions.
  701. * casinh: (libc)Hyperbolic Functions.
  702. * casinhf: (libc)Hyperbolic Functions.
  703. * casinhfN: (libc)Hyperbolic Functions.
  704. * casinhfNx: (libc)Hyperbolic Functions.
  705. * casinhl: (libc)Hyperbolic Functions.
  706. * casinl: (libc)Inverse Trig Functions.
  707. * catan: (libc)Inverse Trig Functions.
  708. * catanf: (libc)Inverse Trig Functions.
  709. * catanfN: (libc)Inverse Trig Functions.
  710. * catanfNx: (libc)Inverse Trig Functions.
  711. * catanh: (libc)Hyperbolic Functions.
  712. * catanhf: (libc)Hyperbolic Functions.
  713. * catanhfN: (libc)Hyperbolic Functions.
  714. * catanhfNx: (libc)Hyperbolic Functions.
  715. * catanhl: (libc)Hyperbolic Functions.
  716. * catanl: (libc)Inverse Trig Functions.
  717. * catclose: (libc)The catgets Functions.
  718. * catgets: (libc)The catgets Functions.
  719. * catopen: (libc)The catgets Functions.
  720. * cbrt: (libc)Exponents and Logarithms.
  721. * cbrtf: (libc)Exponents and Logarithms.
  722. * cbrtfN: (libc)Exponents and Logarithms.
  723. * cbrtfNx: (libc)Exponents and Logarithms.
  724. * cbrtl: (libc)Exponents and Logarithms.
  725. * ccos: (libc)Trig Functions.
  726. * ccosf: (libc)Trig Functions.
  727. * ccosfN: (libc)Trig Functions.
  728. * ccosfNx: (libc)Trig Functions.
  729. * ccosh: (libc)Hyperbolic Functions.
  730. * ccoshf: (libc)Hyperbolic Functions.
  731. * ccoshfN: (libc)Hyperbolic Functions.
  732. * ccoshfNx: (libc)Hyperbolic Functions.
  733. * ccoshl: (libc)Hyperbolic Functions.
  734. * ccosl: (libc)Trig Functions.
  735. * ceil: (libc)Rounding Functions.
  736. * ceilf: (libc)Rounding Functions.
  737. * ceilfN: (libc)Rounding Functions.
  738. * ceilfNx: (libc)Rounding Functions.
  739. * ceill: (libc)Rounding Functions.
  740. * cexp: (libc)Exponents and Logarithms.
  741. * cexpf: (libc)Exponents and Logarithms.
  742. * cexpfN: (libc)Exponents and Logarithms.
  743. * cexpfNx: (libc)Exponents and Logarithms.
  744. * cexpl: (libc)Exponents and Logarithms.
  745. * cfgetibaud: (libc)Line Speed.
  746. * cfgetispeed: (libc)Line Speed.
  747. * cfgetobaud: (libc)Line Speed.
  748. * cfgetospeed: (libc)Line Speed.
  749. * cfmakeraw: (libc)Noncanonical Input.
  750. * cfsetbaud: (libc)Line Speed.
  751. * cfsetibaud: (libc)Line Speed.
  752. * cfsetispeed: (libc)Line Speed.
  753. * cfsetobaud: (libc)Line Speed.
  754. * cfsetospeed: (libc)Line Speed.
  755. * cfsetspeed: (libc)Line Speed.
  756. * chdir: (libc)Working Directory.
  757. * chmod: (libc)Setting Permissions.
  758. * chown: (libc)File Owner.
  759. * cimag: (libc)Operations on Complex.
  760. * cimagf: (libc)Operations on Complex.
  761. * cimagfN: (libc)Operations on Complex.
  762. * cimagfNx: (libc)Operations on Complex.
  763. * cimagl: (libc)Operations on Complex.
  764. * clearenv: (libc)Environment Access.
  765. * clearerr: (libc)Error Recovery.
  766. * clearerr_unlocked: (libc)Error Recovery.
  767. * clock: (libc)CPU Time.
  768. * clock_getres: (libc)Getting the Time.
  769. * clock_gettime: (libc)Getting the Time.
  770. * clock_nanosleep: (libc)Sleeping.
  771. * clock_settime: (libc)Setting and Adjusting the Time.
  772. * clog10: (libc)Exponents and Logarithms.
  773. * clog10f: (libc)Exponents and Logarithms.
  774. * clog10fN: (libc)Exponents and Logarithms.
  775. * clog10fNx: (libc)Exponents and Logarithms.
  776. * clog10l: (libc)Exponents and Logarithms.
  777. * clog: (libc)Exponents and Logarithms.
  778. * clogf: (libc)Exponents and Logarithms.
  779. * clogfN: (libc)Exponents and Logarithms.
  780. * clogfNx: (libc)Exponents and Logarithms.
  781. * clogl: (libc)Exponents and Logarithms.
  782. * close: (libc)Opening and Closing Files.
  783. * close_range: (libc)Opening and Closing Files.
  784. * closedir: (libc)Reading/Closing Directory.
  785. * closefrom: (libc)Opening and Closing Files.
  786. * closelog: (libc)closelog.
  787. * cnd_broadcast: (libc)ISO C Condition Variables.
  788. * cnd_destroy: (libc)ISO C Condition Variables.
  789. * cnd_init: (libc)ISO C Condition Variables.
  790. * cnd_signal: (libc)ISO C Condition Variables.
  791. * cnd_timedwait: (libc)ISO C Condition Variables.
  792. * cnd_wait: (libc)ISO C Condition Variables.
  793. * compoundn: (libc)Exponents and Logarithms.
  794. * compoundnf: (libc)Exponents and Logarithms.
  795. * compoundnfN: (libc)Exponents and Logarithms.
  796. * compoundnfNx: (libc)Exponents and Logarithms.
  797. * compoundnl: (libc)Exponents and Logarithms.
  798. * confstr: (libc)String Parameters.
  799. * conj: (libc)Operations on Complex.
  800. * conjf: (libc)Operations on Complex.
  801. * conjfN: (libc)Operations on Complex.
  802. * conjfNx: (libc)Operations on Complex.
  803. * conjl: (libc)Operations on Complex.
  804. * connect: (libc)Connecting.
  805. * copy_file_range: (libc)Copying File Data.
  806. * copysign: (libc)FP Bit Twiddling.
  807. * copysignf: (libc)FP Bit Twiddling.
  808. * copysignfN: (libc)FP Bit Twiddling.
  809. * copysignfNx: (libc)FP Bit Twiddling.
  810. * copysignl: (libc)FP Bit Twiddling.
  811. * cos: (libc)Trig Functions.
  812. * cosf: (libc)Trig Functions.
  813. * cosfN: (libc)Trig Functions.
  814. * cosfNx: (libc)Trig Functions.
  815. * cosh: (libc)Hyperbolic Functions.
  816. * coshf: (libc)Hyperbolic Functions.
  817. * coshfN: (libc)Hyperbolic Functions.
  818. * coshfNx: (libc)Hyperbolic Functions.
  819. * coshl: (libc)Hyperbolic Functions.
  820. * cosl: (libc)Trig Functions.
  821. * cospi: (libc)Trig Functions.
  822. * cospif: (libc)Trig Functions.
  823. * cospifN: (libc)Trig Functions.
  824. * cospifNx: (libc)Trig Functions.
  825. * cospil: (libc)Trig Functions.
  826. * cpow: (libc)Exponents and Logarithms.
  827. * cpowf: (libc)Exponents and Logarithms.
  828. * cpowfN: (libc)Exponents and Logarithms.
  829. * cpowfNx: (libc)Exponents and Logarithms.
  830. * cpowl: (libc)Exponents and Logarithms.
  831. * cproj: (libc)Operations on Complex.
  832. * cprojf: (libc)Operations on Complex.
  833. * cprojfN: (libc)Operations on Complex.
  834. * cprojfNx: (libc)Operations on Complex.
  835. * cprojl: (libc)Operations on Complex.
  836. * creal: (libc)Operations on Complex.
  837. * crealf: (libc)Operations on Complex.
  838. * crealfN: (libc)Operations on Complex.
  839. * crealfNx: (libc)Operations on Complex.
  840. * creall: (libc)Operations on Complex.
  841. * creat64: (libc)Opening and Closing Files.
  842. * creat: (libc)Opening and Closing Files.
  843. * csin: (libc)Trig Functions.
  844. * csinf: (libc)Trig Functions.
  845. * csinfN: (libc)Trig Functions.
  846. * csinfNx: (libc)Trig Functions.
  847. * csinh: (libc)Hyperbolic Functions.
  848. * csinhf: (libc)Hyperbolic Functions.
  849. * csinhfN: (libc)Hyperbolic Functions.
  850. * csinhfNx: (libc)Hyperbolic Functions.
  851. * csinhl: (libc)Hyperbolic Functions.
  852. * csinl: (libc)Trig Functions.
  853. * csqrt: (libc)Exponents and Logarithms.
  854. * csqrtf: (libc)Exponents and Logarithms.
  855. * csqrtfN: (libc)Exponents and Logarithms.
  856. * csqrtfNx: (libc)Exponents and Logarithms.
  857. * csqrtl: (libc)Exponents and Logarithms.
  858. * ctan: (libc)Trig Functions.
  859. * ctanf: (libc)Trig Functions.
  860. * ctanfN: (libc)Trig Functions.
  861. * ctanfNx: (libc)Trig Functions.
  862. * ctanh: (libc)Hyperbolic Functions.
  863. * ctanhf: (libc)Hyperbolic Functions.
  864. * ctanhfN: (libc)Hyperbolic Functions.
  865. * ctanhfNx: (libc)Hyperbolic Functions.
  866. * ctanhl: (libc)Hyperbolic Functions.
  867. * ctanl: (libc)Trig Functions.
  868. * ctermid: (libc)Identifying the Terminal.
  869. * ctime: (libc)Formatting Calendar Time.
  870. * ctime_r: (libc)Formatting Calendar Time.
  871. * cuserid: (libc)Who Logged In.
  872. * daddl: (libc)Misc FP Arithmetic.
  873. * dcgettext: (libc)Translation with gettext.
  874. * dcngettext: (libc)Advanced gettext functions.
  875. * ddivl: (libc)Misc FP Arithmetic.
  876. * dfmal: (libc)Misc FP Arithmetic.
  877. * dgettext: (libc)Translation with gettext.
  878. * difftime: (libc)Calculating Elapsed Time.
  879. * dirfd: (libc)Opening a Directory.
  880. * dirname: (libc)Finding Tokens in a String.
  881. * div: (libc)Integer Division.
  882. * dlinfo: (libc)Dynamic Linker Introspection.
  883. * dmull: (libc)Misc FP Arithmetic.
  884. * dngettext: (libc)Advanced gettext functions.
  885. * dprintf: (libc)Formatted Output Functions.
  886. * drand48: (libc)SVID Random.
  887. * drand48_r: (libc)SVID Random.
  888. * drem: (libc)Remainder Functions.
  889. * dremf: (libc)Remainder Functions.
  890. * dreml: (libc)Remainder Functions.
  891. * dsqrtl: (libc)Misc FP Arithmetic.
  892. * dsubl: (libc)Misc FP Arithmetic.
  893. * dup2: (libc)Duplicating Descriptors.
  894. * dup3: (libc)Duplicating Descriptors.
  895. * dup: (libc)Duplicating Descriptors.
  896. * ecvt: (libc)System V Number Conversion.
  897. * ecvt_r: (libc)System V Number Conversion.
  898. * endfsent: (libc)fstab.
  899. * endgrent: (libc)Scanning All Groups.
  900. * endhostent: (libc)Host Names.
  901. * endmntent: (libc)mtab.
  902. * endnetent: (libc)Networks Database.
  903. * endnetgrent: (libc)Lookup Netgroup.
  904. * endprotoent: (libc)Protocols Database.
  905. * endpwent: (libc)Scanning All Users.
  906. * endservent: (libc)Services Database.
  907. * endutent: (libc)Manipulating the Database.
  908. * endutxent: (libc)XPG Functions.
  909. * envz_add: (libc)Envz Functions.
  910. * envz_entry: (libc)Envz Functions.
  911. * envz_get: (libc)Envz Functions.
  912. * envz_merge: (libc)Envz Functions.
  913. * envz_remove: (libc)Envz Functions.
  914. * envz_strip: (libc)Envz Functions.
  915. * epoll_create: (libc)Other Low-Level I/O APIs.
  916. * epoll_wait: (libc)Other Low-Level I/O APIs.
  917. * erand48: (libc)SVID Random.
  918. * erand48_r: (libc)SVID Random.
  919. * erf: (libc)Special Functions.
  920. * erfc: (libc)Special Functions.
  921. * erfcf: (libc)Special Functions.
  922. * erfcfN: (libc)Special Functions.
  923. * erfcfNx: (libc)Special Functions.
  924. * erfcl: (libc)Special Functions.
  925. * erff: (libc)Special Functions.
  926. * erffN: (libc)Special Functions.
  927. * erffNx: (libc)Special Functions.
  928. * erfl: (libc)Special Functions.
  929. * err: (libc)Error Messages.
  930. * errno: (libc)Checking for Errors.
  931. * error: (libc)Error Messages.
  932. * error_at_line: (libc)Error Messages.
  933. * errx: (libc)Error Messages.
  934. * execl: (libc)Executing a File.
  935. * execle: (libc)Executing a File.
  936. * execlp: (libc)Executing a File.
  937. * execv: (libc)Executing a File.
  938. * execve: (libc)Executing a File.
  939. * execvp: (libc)Executing a File.
  940. * exit: (libc)Normal Termination.
  941. * exp10: (libc)Exponents and Logarithms.
  942. * exp10f: (libc)Exponents and Logarithms.
  943. * exp10fN: (libc)Exponents and Logarithms.
  944. * exp10fNx: (libc)Exponents and Logarithms.
  945. * exp10l: (libc)Exponents and Logarithms.
  946. * exp10m1: (libc)Exponents and Logarithms.
  947. * exp10m1f: (libc)Exponents and Logarithms.
  948. * exp10m1fN: (libc)Exponents and Logarithms.
  949. * exp10m1fNx: (libc)Exponents and Logarithms.
  950. * exp10m1l: (libc)Exponents and Logarithms.
  951. * exp2: (libc)Exponents and Logarithms.
  952. * exp2f: (libc)Exponents and Logarithms.
  953. * exp2fN: (libc)Exponents and Logarithms.
  954. * exp2fNx: (libc)Exponents and Logarithms.
  955. * exp2l: (libc)Exponents and Logarithms.
  956. * exp2m1: (libc)Exponents and Logarithms.
  957. * exp2m1f: (libc)Exponents and Logarithms.
  958. * exp2m1fN: (libc)Exponents and Logarithms.
  959. * exp2m1fNx: (libc)Exponents and Logarithms.
  960. * exp2m1l: (libc)Exponents and Logarithms.
  961. * exp: (libc)Exponents and Logarithms.
  962. * expf: (libc)Exponents and Logarithms.
  963. * expfN: (libc)Exponents and Logarithms.
  964. * expfNx: (libc)Exponents and Logarithms.
  965. * expl: (libc)Exponents and Logarithms.
  966. * explicit_bzero: (libc)Erasing Sensitive Data.
  967. * expm1: (libc)Exponents and Logarithms.
  968. * expm1f: (libc)Exponents and Logarithms.
  969. * expm1fN: (libc)Exponents and Logarithms.
  970. * expm1fNx: (libc)Exponents and Logarithms.
  971. * expm1l: (libc)Exponents and Logarithms.
  972. * fMaddfN: (libc)Misc FP Arithmetic.
  973. * fMaddfNx: (libc)Misc FP Arithmetic.
  974. * fMdivfN: (libc)Misc FP Arithmetic.
  975. * fMdivfNx: (libc)Misc FP Arithmetic.
  976. * fMfmafN: (libc)Misc FP Arithmetic.
  977. * fMfmafNx: (libc)Misc FP Arithmetic.
  978. * fMmulfN: (libc)Misc FP Arithmetic.
  979. * fMmulfNx: (libc)Misc FP Arithmetic.
  980. * fMsqrtfN: (libc)Misc FP Arithmetic.
  981. * fMsqrtfNx: (libc)Misc FP Arithmetic.
  982. * fMsubfN: (libc)Misc FP Arithmetic.
  983. * fMsubfNx: (libc)Misc FP Arithmetic.
  984. * fMxaddfN: (libc)Misc FP Arithmetic.
  985. * fMxaddfNx: (libc)Misc FP Arithmetic.
  986. * fMxdivfN: (libc)Misc FP Arithmetic.
  987. * fMxdivfNx: (libc)Misc FP Arithmetic.
  988. * fMxfmafN: (libc)Misc FP Arithmetic.
  989. * fMxfmafNx: (libc)Misc FP Arithmetic.
  990. * fMxmulfN: (libc)Misc FP Arithmetic.
  991. * fMxmulfNx: (libc)Misc FP Arithmetic.
  992. * fMxsqrtfN: (libc)Misc FP Arithmetic.
  993. * fMxsqrtfNx: (libc)Misc FP Arithmetic.
  994. * fMxsubfN: (libc)Misc FP Arithmetic.
  995. * fMxsubfNx: (libc)Misc FP Arithmetic.
  996. * fabs: (libc)Absolute Value.
  997. * fabsf: (libc)Absolute Value.
  998. * fabsfN: (libc)Absolute Value.
  999. * fabsfNx: (libc)Absolute Value.
  1000. * fabsl: (libc)Absolute Value.
  1001. * faccessat: (libc)Testing File Access.
  1002. * fadd: (libc)Misc FP Arithmetic.
  1003. * faddl: (libc)Misc FP Arithmetic.
  1004. * fchdir: (libc)Working Directory.
  1005. * fchmod: (libc)Setting Permissions.
  1006. * fchown: (libc)File Owner.
  1007. * fclose: (libc)Closing Streams.
  1008. * fcloseall: (libc)Closing Streams.
  1009. * fcntl: (libc)Control Operations.
  1010. * fcvt: (libc)System V Number Conversion.
  1011. * fcvt_r: (libc)System V Number Conversion.
  1012. * fdatasync: (libc)Synchronizing I/O.
  1013. * fdim: (libc)Misc FP Arithmetic.
  1014. * fdimf: (libc)Misc FP Arithmetic.
  1015. * fdimfN: (libc)Misc FP Arithmetic.
  1016. * fdimfNx: (libc)Misc FP Arithmetic.
  1017. * fdiml: (libc)Misc FP Arithmetic.
  1018. * fdiv: (libc)Misc FP Arithmetic.
  1019. * fdivl: (libc)Misc FP Arithmetic.
  1020. * fdopen: (libc)Descriptors and Streams.
  1021. * fdopendir: (libc)Opening a Directory.
  1022. * feclearexcept: (libc)Status bit operations.
  1023. * fedisableexcept: (libc)Control Functions.
  1024. * feenableexcept: (libc)Control Functions.
  1025. * fegetenv: (libc)Control Functions.
  1026. * fegetexcept: (libc)Control Functions.
  1027. * fegetexceptflag: (libc)Status bit operations.
  1028. * fegetmode: (libc)Control Functions.
  1029. * fegetround: (libc)Rounding.
  1030. * feholdexcept: (libc)Control Functions.
  1031. * feof: (libc)EOF and Errors.
  1032. * feof_unlocked: (libc)EOF and Errors.
  1033. * feraiseexcept: (libc)Status bit operations.
  1034. * ferror: (libc)EOF and Errors.
  1035. * ferror_unlocked: (libc)EOF and Errors.
  1036. * fesetenv: (libc)Control Functions.
  1037. * fesetexcept: (libc)Status bit operations.
  1038. * fesetexceptflag: (libc)Status bit operations.
  1039. * fesetmode: (libc)Control Functions.
  1040. * fesetround: (libc)Rounding.
  1041. * fetestexcept: (libc)Status bit operations.
  1042. * fetestexceptflag: (libc)Status bit operations.
  1043. * feupdateenv: (libc)Control Functions.
  1044. * fexecve: (libc)Executing a File.
  1045. * fflush: (libc)Flushing Buffers.
  1046. * fflush_unlocked: (libc)Flushing Buffers.
  1047. * ffma: (libc)Misc FP Arithmetic.
  1048. * ffmal: (libc)Misc FP Arithmetic.
  1049. * fgetc: (libc)Character Input.
  1050. * fgetc_unlocked: (libc)Character Input.
  1051. * fgetgrent: (libc)Scanning All Groups.
  1052. * fgetgrent_r: (libc)Scanning All Groups.
  1053. * fgetpos64: (libc)Portable Positioning.
  1054. * fgetpos: (libc)Portable Positioning.
  1055. * fgetpwent: (libc)Scanning All Users.
  1056. * fgetpwent_r: (libc)Scanning All Users.
  1057. * fgets: (libc)Line Input.
  1058. * fgets_unlocked: (libc)Line Input.
  1059. * fgetwc: (libc)Character Input.
  1060. * fgetwc_unlocked: (libc)Character Input.
  1061. * fgetws: (libc)Line Input.
  1062. * fgetws_unlocked: (libc)Line Input.
  1063. * fileno: (libc)Descriptors and Streams.
  1064. * fileno_unlocked: (libc)Descriptors and Streams.
  1065. * finite: (libc)Floating Point Classes.
  1066. * finitef: (libc)Floating Point Classes.
  1067. * finitel: (libc)Floating Point Classes.
  1068. * flockfile: (libc)Streams and Threads.
  1069. * floor: (libc)Rounding Functions.
  1070. * floorf: (libc)Rounding Functions.
  1071. * floorfN: (libc)Rounding Functions.
  1072. * floorfNx: (libc)Rounding Functions.
  1073. * floorl: (libc)Rounding Functions.
  1074. * fma: (libc)Misc FP Arithmetic.
  1075. * fmaf: (libc)Misc FP Arithmetic.
  1076. * fmafN: (libc)Misc FP Arithmetic.
  1077. * fmafNx: (libc)Misc FP Arithmetic.
  1078. * fmal: (libc)Misc FP Arithmetic.
  1079. * fmax: (libc)Misc FP Arithmetic.
  1080. * fmaxf: (libc)Misc FP Arithmetic.
  1081. * fmaxfN: (libc)Misc FP Arithmetic.
  1082. * fmaxfNx: (libc)Misc FP Arithmetic.
  1083. * fmaximum: (libc)Misc FP Arithmetic.
  1084. * fmaximum_mag: (libc)Misc FP Arithmetic.
  1085. * fmaximum_mag_num: (libc)Misc FP Arithmetic.
  1086. * fmaximum_mag_numf: (libc)Misc FP Arithmetic.
  1087. * fmaximum_mag_numfN: (libc)Misc FP Arithmetic.
  1088. * fmaximum_mag_numfNx: (libc)Misc FP Arithmetic.
  1089. * fmaximum_mag_numl: (libc)Misc FP Arithmetic.
  1090. * fmaximum_magf: (libc)Misc FP Arithmetic.
  1091. * fmaximum_magfN: (libc)Misc FP Arithmetic.
  1092. * fmaximum_magfNx: (libc)Misc FP Arithmetic.
  1093. * fmaximum_magl: (libc)Misc FP Arithmetic.
  1094. * fmaximum_num: (libc)Misc FP Arithmetic.
  1095. * fmaximum_numf: (libc)Misc FP Arithmetic.
  1096. * fmaximum_numfN: (libc)Misc FP Arithmetic.
  1097. * fmaximum_numfNx: (libc)Misc FP Arithmetic.
  1098. * fmaximum_numl: (libc)Misc FP Arithmetic.
  1099. * fmaximumf: (libc)Misc FP Arithmetic.
  1100. * fmaximumfN: (libc)Misc FP Arithmetic.
  1101. * fmaximumfNx: (libc)Misc FP Arithmetic.
  1102. * fmaximuml: (libc)Misc FP Arithmetic.
  1103. * fmaxl: (libc)Misc FP Arithmetic.
  1104. * fmaxmag: (libc)Misc FP Arithmetic.
  1105. * fmaxmagf: (libc)Misc FP Arithmetic.
  1106. * fmaxmagfN: (libc)Misc FP Arithmetic.
  1107. * fmaxmagfNx: (libc)Misc FP Arithmetic.
  1108. * fmaxmagl: (libc)Misc FP Arithmetic.
  1109. * fmemopen: (libc)String Streams.
  1110. * fmin: (libc)Misc FP Arithmetic.
  1111. * fminf: (libc)Misc FP Arithmetic.
  1112. * fminfN: (libc)Misc FP Arithmetic.
  1113. * fminfNx: (libc)Misc FP Arithmetic.
  1114. * fminimum: (libc)Misc FP Arithmetic.
  1115. * fminimum_mag: (libc)Misc FP Arithmetic.
  1116. * fminimum_mag_num: (libc)Misc FP Arithmetic.
  1117. * fminimum_mag_numf: (libc)Misc FP Arithmetic.
  1118. * fminimum_mag_numfN: (libc)Misc FP Arithmetic.
  1119. * fminimum_mag_numfNx: (libc)Misc FP Arithmetic.
  1120. * fminimum_mag_numl: (libc)Misc FP Arithmetic.
  1121. * fminimum_magf: (libc)Misc FP Arithmetic.
  1122. * fminimum_magfN: (libc)Misc FP Arithmetic.
  1123. * fminimum_magfNx: (libc)Misc FP Arithmetic.
  1124. * fminimum_magl: (libc)Misc FP Arithmetic.
  1125. * fminimum_num: (libc)Misc FP Arithmetic.
  1126. * fminimum_numf: (libc)Misc FP Arithmetic.
  1127. * fminimum_numfN: (libc)Misc FP Arithmetic.
  1128. * fminimum_numfNx: (libc)Misc FP Arithmetic.
  1129. * fminimum_numl: (libc)Misc FP Arithmetic.
  1130. * fminimumf: (libc)Misc FP Arithmetic.
  1131. * fminimumfN: (libc)Misc FP Arithmetic.
  1132. * fminimumfNx: (libc)Misc FP Arithmetic.
  1133. * fminimuml: (libc)Misc FP Arithmetic.
  1134. * fminl: (libc)Misc FP Arithmetic.
  1135. * fminmag: (libc)Misc FP Arithmetic.
  1136. * fminmagf: (libc)Misc FP Arithmetic.
  1137. * fminmagfN: (libc)Misc FP Arithmetic.
  1138. * fminmagfNx: (libc)Misc FP Arithmetic.
  1139. * fminmagl: (libc)Misc FP Arithmetic.
  1140. * fmod: (libc)Remainder Functions.
  1141. * fmodf: (libc)Remainder Functions.
  1142. * fmodfN: (libc)Remainder Functions.
  1143. * fmodfNx: (libc)Remainder Functions.
  1144. * fmodl: (libc)Remainder Functions.
  1145. * fmtmsg: (libc)Printing Formatted Messages.
  1146. * fmul: (libc)Misc FP Arithmetic.
  1147. * fmull: (libc)Misc FP Arithmetic.
  1148. * fnmatch: (libc)Wildcard Matching.
  1149. * fopen64: (libc)Opening Streams.
  1150. * fopen: (libc)Opening Streams.
  1151. * fopencookie: (libc)Streams and Cookies.
  1152. * fork: (libc)Creating a Process.
  1153. * forkpty: (libc)Pseudo-Terminal Pairs.
  1154. * fpathconf: (libc)Pathconf.
  1155. * fpclassify: (libc)Floating Point Classes.
  1156. * fprintf: (libc)Formatted Output Functions.
  1157. * fputc: (libc)Simple Output.
  1158. * fputc_unlocked: (libc)Simple Output.
  1159. * fputs: (libc)Simple Output.
  1160. * fputs_unlocked: (libc)Simple Output.
  1161. * fputwc: (libc)Simple Output.
  1162. * fputwc_unlocked: (libc)Simple Output.
  1163. * fputws: (libc)Simple Output.
  1164. * fputws_unlocked: (libc)Simple Output.
  1165. * fread: (libc)Block Input/Output.
  1166. * fread_unlocked: (libc)Block Input/Output.
  1167. * free: (libc)Freeing after Malloc.
  1168. * free_aligned_sized: (libc)Freeing after Malloc.
  1169. * free_sized: (libc)Freeing after Malloc.
  1170. * freopen64: (libc)Opening Streams.
  1171. * freopen: (libc)Opening Streams.
  1172. * frexp: (libc)Normalization Functions.
  1173. * frexpf: (libc)Normalization Functions.
  1174. * frexpfN: (libc)Normalization Functions.
  1175. * frexpfNx: (libc)Normalization Functions.
  1176. * frexpl: (libc)Normalization Functions.
  1177. * fromfp: (libc)Rounding Functions.
  1178. * fromfpf: (libc)Rounding Functions.
  1179. * fromfpfN: (libc)Rounding Functions.
  1180. * fromfpfNx: (libc)Rounding Functions.
  1181. * fromfpl: (libc)Rounding Functions.
  1182. * fromfpx: (libc)Rounding Functions.
  1183. * fromfpxf: (libc)Rounding Functions.
  1184. * fromfpxfN: (libc)Rounding Functions.
  1185. * fromfpxfNx: (libc)Rounding Functions.
  1186. * fromfpxl: (libc)Rounding Functions.
  1187. * fscanf: (libc)Formatted Input Functions.
  1188. * fseek: (libc)File Positioning.
  1189. * fseeko64: (libc)File Positioning.
  1190. * fseeko: (libc)File Positioning.
  1191. * fsetpos64: (libc)Portable Positioning.
  1192. * fsetpos: (libc)Portable Positioning.
  1193. * fsqrt: (libc)Misc FP Arithmetic.
  1194. * fsqrtl: (libc)Misc FP Arithmetic.
  1195. * fstat64: (libc)Reading Attributes.
  1196. * fstat: (libc)Reading Attributes.
  1197. * fstatat64: (libc)Reading Attributes.
  1198. * fstatat: (libc)Reading Attributes.
  1199. * fsub: (libc)Misc FP Arithmetic.
  1200. * fsubl: (libc)Misc FP Arithmetic.
  1201. * fsync: (libc)Synchronizing I/O.
  1202. * ftell: (libc)File Positioning.
  1203. * ftello64: (libc)File Positioning.
  1204. * ftello: (libc)File Positioning.
  1205. * ftruncate64: (libc)File Size.
  1206. * ftruncate: (libc)File Size.
  1207. * ftrylockfile: (libc)Streams and Threads.
  1208. * ftw64: (libc)Working with Directory Trees.
  1209. * ftw: (libc)Working with Directory Trees.
  1210. * funlockfile: (libc)Streams and Threads.
  1211. * futimens: (libc)File Times.
  1212. * futimes: (libc)File Times.
  1213. * fwide: (libc)Streams and I18N.
  1214. * fwprintf: (libc)Formatted Output Functions.
  1215. * fwrite: (libc)Block Input/Output.
  1216. * fwrite_unlocked: (libc)Block Input/Output.
  1217. * fwscanf: (libc)Formatted Input Functions.
  1218. * gamma: (libc)Special Functions.
  1219. * gammaf: (libc)Special Functions.
  1220. * gammal: (libc)Special Functions.
  1221. * gcvt: (libc)System V Number Conversion.
  1222. * get_avphys_pages: (libc)Query Memory Parameters.
  1223. * get_current_dir_name: (libc)Working Directory.
  1224. * get_nprocs: (libc)Processor Resources.
  1225. * get_nprocs_conf: (libc)Processor Resources.
  1226. * get_phys_pages: (libc)Query Memory Parameters.
  1227. * getauxval: (libc)Auxiliary Vector.
  1228. * getc: (libc)Character Input.
  1229. * getc_unlocked: (libc)Character Input.
  1230. * getchar: (libc)Character Input.
  1231. * getchar_unlocked: (libc)Character Input.
  1232. * getcontext: (libc)System V contexts.
  1233. * getcpu: (libc)CPU Affinity.
  1234. * getcwd: (libc)Working Directory.
  1235. * getdate: (libc)General Time String Parsing.
  1236. * getdate_r: (libc)General Time String Parsing.
  1237. * getdelim: (libc)Line Input.
  1238. * getdents64: (libc)Low-level Directory Access.
  1239. * getdomainname: (libc)Host Identification.
  1240. * getegid: (libc)Reading Persona.
  1241. * getentropy: (libc)Unpredictable Bytes.
  1242. * getenv: (libc)Environment Access.
  1243. * geteuid: (libc)Reading Persona.
  1244. * getfsent: (libc)fstab.
  1245. * getfsfile: (libc)fstab.
  1246. * getfsspec: (libc)fstab.
  1247. * getgid: (libc)Reading Persona.
  1248. * getgrent: (libc)Scanning All Groups.
  1249. * getgrent_r: (libc)Scanning All Groups.
  1250. * getgrgid: (libc)Lookup Group.
  1251. * getgrgid_r: (libc)Lookup Group.
  1252. * getgrnam: (libc)Lookup Group.
  1253. * getgrnam_r: (libc)Lookup Group.
  1254. * getgrouplist: (libc)Setting Groups.
  1255. * getgroups: (libc)Reading Persona.
  1256. * gethostbyaddr: (libc)Host Names.
  1257. * gethostbyaddr_r: (libc)Host Names.
  1258. * gethostbyname2: (libc)Host Names.
  1259. * gethostbyname2_r: (libc)Host Names.
  1260. * gethostbyname: (libc)Host Names.
  1261. * gethostbyname_r: (libc)Host Names.
  1262. * gethostent: (libc)Host Names.
  1263. * gethostid: (libc)Host Identification.
  1264. * gethostname: (libc)Host Identification.
  1265. * getitimer: (libc)Setting an Alarm.
  1266. * getline: (libc)Line Input.
  1267. * getloadavg: (libc)Processor Resources.
  1268. * getlogin: (libc)Who Logged In.
  1269. * getmntent: (libc)mtab.
  1270. * getmntent_r: (libc)mtab.
  1271. * getnetbyaddr: (libc)Networks Database.
  1272. * getnetbyname: (libc)Networks Database.
  1273. * getnetent: (libc)Networks Database.
  1274. * getnetgrent: (libc)Lookup Netgroup.
  1275. * getnetgrent_r: (libc)Lookup Netgroup.
  1276. * getopt: (libc)Using Getopt.
  1277. * getopt_long: (libc)Getopt Long Options.
  1278. * getopt_long_only: (libc)Getopt Long Options.
  1279. * getpagesize: (libc)Query Memory Parameters.
  1280. * getpass: (libc)getpass.
  1281. * getpayload: (libc)FP Bit Twiddling.
  1282. * getpayloadf: (libc)FP Bit Twiddling.
  1283. * getpayloadfN: (libc)FP Bit Twiddling.
  1284. * getpayloadfNx: (libc)FP Bit Twiddling.
  1285. * getpayloadl: (libc)FP Bit Twiddling.
  1286. * getpeername: (libc)Who is Connected.
  1287. * getpgid: (libc)Process Group Functions.
  1288. * getpgrp: (libc)Process Group Functions.
  1289. * getpid: (libc)Process Identification.
  1290. * getppid: (libc)Process Identification.
  1291. * getpriority: (libc)Traditional Scheduling Functions.
  1292. * getprotobyname: (libc)Protocols Database.
  1293. * getprotobynumber: (libc)Protocols Database.
  1294. * getprotoent: (libc)Protocols Database.
  1295. * getpt: (libc)Allocation.
  1296. * getpwent: (libc)Scanning All Users.
  1297. * getpwent_r: (libc)Scanning All Users.
  1298. * getpwnam: (libc)Lookup User.
  1299. * getpwnam_r: (libc)Lookup User.
  1300. * getpwuid: (libc)Lookup User.
  1301. * getpwuid_r: (libc)Lookup User.
  1302. * getrandom: (libc)Unpredictable Bytes.
  1303. * getrlimit64: (libc)Limits on Resources.
  1304. * getrlimit: (libc)Limits on Resources.
  1305. * getrusage: (libc)Resource Usage.
  1306. * gets: (libc)Line Input.
  1307. * getservbyname: (libc)Services Database.
  1308. * getservbyport: (libc)Services Database.
  1309. * getservent: (libc)Services Database.
  1310. * getsid: (libc)Process Group Functions.
  1311. * getsockname: (libc)Reading Address.
  1312. * getsockopt: (libc)Socket Option Functions.
  1313. * getsubopt: (libc)Suboptions.
  1314. * gettext: (libc)Translation with gettext.
  1315. * gettid: (libc)Process Identification.
  1316. * gettimeofday: (libc)Getting the Time.
  1317. * getuid: (libc)Reading Persona.
  1318. * getumask: (libc)Setting Permissions.
  1319. * getutent: (libc)Manipulating the Database.
  1320. * getutent_r: (libc)Manipulating the Database.
  1321. * getutid: (libc)Manipulating the Database.
  1322. * getutid_r: (libc)Manipulating the Database.
  1323. * getutline: (libc)Manipulating the Database.
  1324. * getutline_r: (libc)Manipulating the Database.
  1325. * getutmp: (libc)XPG Functions.
  1326. * getutmpx: (libc)XPG Functions.
  1327. * getutxent: (libc)XPG Functions.
  1328. * getutxid: (libc)XPG Functions.
  1329. * getutxline: (libc)XPG Functions.
  1330. * getw: (libc)Character Input.
  1331. * getwc: (libc)Character Input.
  1332. * getwc_unlocked: (libc)Character Input.
  1333. * getwchar: (libc)Character Input.
  1334. * getwchar_unlocked: (libc)Character Input.
  1335. * getwd: (libc)Working Directory.
  1336. * glob64: (libc)Calling Glob.
  1337. * glob: (libc)Calling Glob.
  1338. * globfree64: (libc)More Flags for Globbing.
  1339. * globfree: (libc)More Flags for Globbing.
  1340. * gmtime: (libc)Broken-down Time.
  1341. * gmtime_r: (libc)Broken-down Time.
  1342. * grantpt: (libc)Allocation.
  1343. * gsignal: (libc)Signaling Yourself.
  1344. * gtty: (libc)BSD Terminal Modes.
  1345. * hasmntopt: (libc)mtab.
  1346. * hcreate: (libc)Hash Search Function.
  1347. * hcreate_r: (libc)Hash Search Function.
  1348. * hdestroy: (libc)Hash Search Function.
  1349. * hdestroy_r: (libc)Hash Search Function.
  1350. * hsearch: (libc)Hash Search Function.
  1351. * hsearch_r: (libc)Hash Search Function.
  1352. * htonl: (libc)Byte Order.
  1353. * htons: (libc)Byte Order.
  1354. * hypot: (libc)Exponents and Logarithms.
  1355. * hypotf: (libc)Exponents and Logarithms.
  1356. * hypotfN: (libc)Exponents and Logarithms.
  1357. * hypotfNx: (libc)Exponents and Logarithms.
  1358. * hypotl: (libc)Exponents and Logarithms.
  1359. * iconv: (libc)Generic Conversion Interface.
  1360. * iconv_close: (libc)Generic Conversion Interface.
  1361. * iconv_open: (libc)Generic Conversion Interface.
  1362. * if_freenameindex: (libc)Interface Naming.
  1363. * if_indextoname: (libc)Interface Naming.
  1364. * if_nameindex: (libc)Interface Naming.
  1365. * if_nametoindex: (libc)Interface Naming.
  1366. * ilogb: (libc)Exponents and Logarithms.
  1367. * ilogbf: (libc)Exponents and Logarithms.
  1368. * ilogbfN: (libc)Exponents and Logarithms.
  1369. * ilogbfNx: (libc)Exponents and Logarithms.
  1370. * ilogbl: (libc)Exponents and Logarithms.
  1371. * imaxabs: (libc)Absolute Value.
  1372. * imaxdiv: (libc)Integer Division.
  1373. * in6addr_any: (libc)Host Address Data Type.
  1374. * in6addr_loopback: (libc)Host Address Data Type.
  1375. * index: (libc)Search Functions.
  1376. * inet_addr: (libc)Host Address Functions.
  1377. * inet_aton: (libc)Host Address Functions.
  1378. * inet_lnaof: (libc)Host Address Functions.
  1379. * inet_makeaddr: (libc)Host Address Functions.
  1380. * inet_netof: (libc)Host Address Functions.
  1381. * inet_network: (libc)Host Address Functions.
  1382. * inet_ntoa: (libc)Host Address Functions.
  1383. * inet_ntop: (libc)Host Address Functions.
  1384. * inet_pton: (libc)Host Address Functions.
  1385. * initgroups: (libc)Setting Groups.
  1386. * initstate: (libc)BSD Random.
  1387. * initstate_r: (libc)BSD Random.
  1388. * innetgr: (libc)Netgroup Membership.
  1389. * ioctl: (libc)IOCTLs.
  1390. * isalnum: (libc)Classification of Characters.
  1391. * isalpha: (libc)Classification of Characters.
  1392. * isascii: (libc)Classification of Characters.
  1393. * isatty: (libc)Is It a Terminal.
  1394. * isblank: (libc)Classification of Characters.
  1395. * iscanonical: (libc)Floating Point Classes.
  1396. * iscntrl: (libc)Classification of Characters.
  1397. * isdigit: (libc)Classification of Characters.
  1398. * iseqsig: (libc)FP Comparison Functions.
  1399. * isfinite: (libc)Floating Point Classes.
  1400. * isgraph: (libc)Classification of Characters.
  1401. * isgreater: (libc)FP Comparison Functions.
  1402. * isgreaterequal: (libc)FP Comparison Functions.
  1403. * isinf: (libc)Floating Point Classes.
  1404. * isinff: (libc)Floating Point Classes.
  1405. * isinfl: (libc)Floating Point Classes.
  1406. * isless: (libc)FP Comparison Functions.
  1407. * islessequal: (libc)FP Comparison Functions.
  1408. * islessgreater: (libc)FP Comparison Functions.
  1409. * islower: (libc)Classification of Characters.
  1410. * isnan: (libc)Floating Point Classes.
  1411. * isnan: (libc)Floating Point Classes.
  1412. * isnanf: (libc)Floating Point Classes.
  1413. * isnanl: (libc)Floating Point Classes.
  1414. * isnormal: (libc)Floating Point Classes.
  1415. * isprint: (libc)Classification of Characters.
  1416. * ispunct: (libc)Classification of Characters.
  1417. * issignaling: (libc)Floating Point Classes.
  1418. * isspace: (libc)Classification of Characters.
  1419. * issubnormal: (libc)Floating Point Classes.
  1420. * isunordered: (libc)FP Comparison Functions.
  1421. * isupper: (libc)Classification of Characters.
  1422. * iswalnum: (libc)Classification of Wide Characters.
  1423. * iswalpha: (libc)Classification of Wide Characters.
  1424. * iswblank: (libc)Classification of Wide Characters.
  1425. * iswcntrl: (libc)Classification of Wide Characters.
  1426. * iswctype: (libc)Classification of Wide Characters.
  1427. * iswdigit: (libc)Classification of Wide Characters.
  1428. * iswgraph: (libc)Classification of Wide Characters.
  1429. * iswlower: (libc)Classification of Wide Characters.
  1430. * iswprint: (libc)Classification of Wide Characters.
  1431. * iswpunct: (libc)Classification of Wide Characters.
  1432. * iswspace: (libc)Classification of Wide Characters.
  1433. * iswupper: (libc)Classification of Wide Characters.
  1434. * iswxdigit: (libc)Classification of Wide Characters.
  1435. * isxdigit: (libc)Classification of Characters.
  1436. * iszero: (libc)Floating Point Classes.
  1437. * j0: (libc)Special Functions.
  1438. * j0f: (libc)Special Functions.
  1439. * j0fN: (libc)Special Functions.
  1440. * j0fNx: (libc)Special Functions.
  1441. * j0l: (libc)Special Functions.
  1442. * j1: (libc)Special Functions.
  1443. * j1f: (libc)Special Functions.
  1444. * j1fN: (libc)Special Functions.
  1445. * j1fNx: (libc)Special Functions.
  1446. * j1l: (libc)Special Functions.
  1447. * jn: (libc)Special Functions.
  1448. * jnf: (libc)Special Functions.
  1449. * jnfN: (libc)Special Functions.
  1450. * jnfNx: (libc)Special Functions.
  1451. * jnl: (libc)Special Functions.
  1452. * jrand48: (libc)SVID Random.
  1453. * jrand48_r: (libc)SVID Random.
  1454. * kill: (libc)Signaling Another Process.
  1455. * killpg: (libc)Signaling Another Process.
  1456. * l64a: (libc)Encode Binary Data.
  1457. * labs: (libc)Absolute Value.
  1458. * lcong48: (libc)SVID Random.
  1459. * lcong48_r: (libc)SVID Random.
  1460. * ldexp: (libc)Normalization Functions.
  1461. * ldexpf: (libc)Normalization Functions.
  1462. * ldexpfN: (libc)Normalization Functions.
  1463. * ldexpfNx: (libc)Normalization Functions.
  1464. * ldexpl: (libc)Normalization Functions.
  1465. * ldiv: (libc)Integer Division.
  1466. * lfind: (libc)Array Search Function.
  1467. * lgamma: (libc)Special Functions.
  1468. * lgamma_r: (libc)Special Functions.
  1469. * lgammaf: (libc)Special Functions.
  1470. * lgammafN: (libc)Special Functions.
  1471. * lgammafN_r: (libc)Special Functions.
  1472. * lgammafNx: (libc)Special Functions.
  1473. * lgammafNx_r: (libc)Special Functions.
  1474. * lgammaf_r: (libc)Special Functions.
  1475. * lgammal: (libc)Special Functions.
  1476. * lgammal_r: (libc)Special Functions.
  1477. * link: (libc)Hard Links.
  1478. * linkat: (libc)Hard Links.
  1479. * lio_listio64: (libc)Asynchronous Reads/Writes.
  1480. * lio_listio: (libc)Asynchronous Reads/Writes.
  1481. * listen: (libc)Listening.
  1482. * llabs: (libc)Absolute Value.
  1483. * lldiv: (libc)Integer Division.
  1484. * llogb: (libc)Exponents and Logarithms.
  1485. * llogbf: (libc)Exponents and Logarithms.
  1486. * llogbfN: (libc)Exponents and Logarithms.
  1487. * llogbfNx: (libc)Exponents and Logarithms.
  1488. * llogbl: (libc)Exponents and Logarithms.
  1489. * llrint: (libc)Rounding Functions.
  1490. * llrintf: (libc)Rounding Functions.
  1491. * llrintfN: (libc)Rounding Functions.
  1492. * llrintfNx: (libc)Rounding Functions.
  1493. * llrintl: (libc)Rounding Functions.
  1494. * llround: (libc)Rounding Functions.
  1495. * llroundf: (libc)Rounding Functions.
  1496. * llroundfN: (libc)Rounding Functions.
  1497. * llroundfNx: (libc)Rounding Functions.
  1498. * llroundl: (libc)Rounding Functions.
  1499. * localeconv: (libc)The Lame Way to Locale Data.
  1500. * localtime: (libc)Broken-down Time.
  1501. * localtime_r: (libc)Broken-down Time.
  1502. * log10: (libc)Exponents and Logarithms.
  1503. * log10f: (libc)Exponents and Logarithms.
  1504. * log10fN: (libc)Exponents and Logarithms.
  1505. * log10fNx: (libc)Exponents and Logarithms.
  1506. * log10l: (libc)Exponents and Logarithms.
  1507. * log10p1: (libc)Exponents and Logarithms.
  1508. * log10p1f: (libc)Exponents and Logarithms.
  1509. * log10p1fN: (libc)Exponents and Logarithms.
  1510. * log10p1fNx: (libc)Exponents and Logarithms.
  1511. * log10p1l: (libc)Exponents and Logarithms.
  1512. * log1p: (libc)Exponents and Logarithms.
  1513. * log1pf: (libc)Exponents and Logarithms.
  1514. * log1pfN: (libc)Exponents and Logarithms.
  1515. * log1pfNx: (libc)Exponents and Logarithms.
  1516. * log1pl: (libc)Exponents and Logarithms.
  1517. * log2: (libc)Exponents and Logarithms.
  1518. * log2f: (libc)Exponents and Logarithms.
  1519. * log2fN: (libc)Exponents and Logarithms.
  1520. * log2fNx: (libc)Exponents and Logarithms.
  1521. * log2l: (libc)Exponents and Logarithms.
  1522. * log2p1: (libc)Exponents and Logarithms.
  1523. * log2p1f: (libc)Exponents and Logarithms.
  1524. * log2p1fN: (libc)Exponents and Logarithms.
  1525. * log2p1fNx: (libc)Exponents and Logarithms.
  1526. * log2p1l: (libc)Exponents and Logarithms.
  1527. * log: (libc)Exponents and Logarithms.
  1528. * logb: (libc)Exponents and Logarithms.
  1529. * logbf: (libc)Exponents and Logarithms.
  1530. * logbfN: (libc)Exponents and Logarithms.
  1531. * logbfNx: (libc)Exponents and Logarithms.
  1532. * logbl: (libc)Exponents and Logarithms.
  1533. * logf: (libc)Exponents and Logarithms.
  1534. * logfN: (libc)Exponents and Logarithms.
  1535. * logfNx: (libc)Exponents and Logarithms.
  1536. * login: (libc)Logging In and Out.
  1537. * login_tty: (libc)Logging In and Out.
  1538. * logl: (libc)Exponents and Logarithms.
  1539. * logout: (libc)Logging In and Out.
  1540. * logp1: (libc)Exponents and Logarithms.
  1541. * logp1f: (libc)Exponents and Logarithms.
  1542. * logp1fN: (libc)Exponents and Logarithms.
  1543. * logp1fNx: (libc)Exponents and Logarithms.
  1544. * logp1l: (libc)Exponents and Logarithms.
  1545. * logwtmp: (libc)Logging In and Out.
  1546. * longjmp: (libc)Non-Local Details.
  1547. * lrand48: (libc)SVID Random.
  1548. * lrand48_r: (libc)SVID Random.
  1549. * lrint: (libc)Rounding Functions.
  1550. * lrintf: (libc)Rounding Functions.
  1551. * lrintfN: (libc)Rounding Functions.
  1552. * lrintfNx: (libc)Rounding Functions.
  1553. * lrintl: (libc)Rounding Functions.
  1554. * lround: (libc)Rounding Functions.
  1555. * lroundf: (libc)Rounding Functions.
  1556. * lroundfN: (libc)Rounding Functions.
  1557. * lroundfNx: (libc)Rounding Functions.
  1558. * lroundl: (libc)Rounding Functions.
  1559. * lsearch: (libc)Array Search Function.
  1560. * lseek64: (libc)File Position Primitive.
  1561. * lseek: (libc)File Position Primitive.
  1562. * lstat64: (libc)Reading Attributes.
  1563. * lstat: (libc)Reading Attributes.
  1564. * lutimes: (libc)File Times.
  1565. * madvise: (libc)Memory-mapped I/O.
  1566. * makecontext: (libc)System V contexts.
  1567. * mallinfo2: (libc)Statistics of Malloc.
  1568. * malloc: (libc)Basic Allocation.
  1569. * mallopt: (libc)Malloc Tunable Parameters.
  1570. * mblen: (libc)Non-reentrant Character Conversion.
  1571. * mbrlen: (libc)Converting a Character.
  1572. * mbrtowc: (libc)Converting a Character.
  1573. * mbsinit: (libc)Keeping the state.
  1574. * mbsnrtowcs: (libc)Converting Strings.
  1575. * mbsrtowcs: (libc)Converting Strings.
  1576. * mbstowcs: (libc)Non-reentrant String Conversion.
  1577. * mbtowc: (libc)Non-reentrant Character Conversion.
  1578. * mcheck: (libc)Heap Consistency Checking.
  1579. * memalign: (libc)Aligned Memory Blocks.
  1580. * memalignment: (libc)Aligned Memory Blocks.
  1581. * memccpy: (libc)Copying Strings and Arrays.
  1582. * memchr: (libc)Search Functions.
  1583. * memcmp: (libc)String/Array Comparison.
  1584. * memcpy: (libc)Copying Strings and Arrays.
  1585. * memfd_create: (libc)Memory-mapped I/O.
  1586. * memfrob: (libc)Obfuscating Data.
  1587. * memmem: (libc)Search Functions.
  1588. * memmove: (libc)Copying Strings and Arrays.
  1589. * mempcpy: (libc)Copying Strings and Arrays.
  1590. * memrchr: (libc)Search Functions.
  1591. * memset: (libc)Copying Strings and Arrays.
  1592. * memset_explicit: (libc)Erasing Sensitive Data.
  1593. * mkdir: (libc)Creating Directories.
  1594. * mkdirat: (libc)Creating Directories.
  1595. * mkdtemp: (libc)Temporary Files.
  1596. * mkfifo: (libc)FIFO Special Files.
  1597. * mknod: (libc)Making Special Files.
  1598. * mkstemp: (libc)Temporary Files.
  1599. * mktemp: (libc)Temporary Files.
  1600. * mktime: (libc)Broken-down Time.
  1601. * mlock2: (libc)Page Lock Functions.
  1602. * mlock: (libc)Page Lock Functions.
  1603. * mlockall: (libc)Page Lock Functions.
  1604. * mmap64: (libc)Memory-mapped I/O.
  1605. * mmap: (libc)Memory-mapped I/O.
  1606. * modf: (libc)Rounding Functions.
  1607. * modff: (libc)Rounding Functions.
  1608. * modffN: (libc)Rounding Functions.
  1609. * modffNx: (libc)Rounding Functions.
  1610. * modfl: (libc)Rounding Functions.
  1611. * mount: (libc)Mount-Unmount-Remount.
  1612. * mprobe: (libc)Heap Consistency Checking.
  1613. * mprotect: (libc)Memory Protection.
  1614. * mrand48: (libc)SVID Random.
  1615. * mrand48_r: (libc)SVID Random.
  1616. * mremap: (libc)Memory-mapped I/O.
  1617. * mseal: (libc)Memory Protection.
  1618. * msync: (libc)Memory-mapped I/O.
  1619. * mtrace: (libc)Tracing malloc.
  1620. * mtx_destroy: (libc)ISO C Mutexes.
  1621. * mtx_init: (libc)ISO C Mutexes.
  1622. * mtx_lock: (libc)ISO C Mutexes.
  1623. * mtx_timedlock: (libc)ISO C Mutexes.
  1624. * mtx_trylock: (libc)ISO C Mutexes.
  1625. * mtx_unlock: (libc)ISO C Mutexes.
  1626. * munlock: (libc)Page Lock Functions.
  1627. * munlockall: (libc)Page Lock Functions.
  1628. * munmap: (libc)Memory-mapped I/O.
  1629. * muntrace: (libc)Tracing malloc.
  1630. * nan: (libc)FP Bit Twiddling.
  1631. * nanf: (libc)FP Bit Twiddling.
  1632. * nanfN: (libc)FP Bit Twiddling.
  1633. * nanfNx: (libc)FP Bit Twiddling.
  1634. * nanl: (libc)FP Bit Twiddling.
  1635. * nanosleep: (libc)Sleeping.
  1636. * nearbyint: (libc)Rounding Functions.
  1637. * nearbyintf: (libc)Rounding Functions.
  1638. * nearbyintfN: (libc)Rounding Functions.
  1639. * nearbyintfNx: (libc)Rounding Functions.
  1640. * nearbyintl: (libc)Rounding Functions.
  1641. * nextafter: (libc)FP Bit Twiddling.
  1642. * nextafterf: (libc)FP Bit Twiddling.
  1643. * nextafterfN: (libc)FP Bit Twiddling.
  1644. * nextafterfNx: (libc)FP Bit Twiddling.
  1645. * nextafterl: (libc)FP Bit Twiddling.
  1646. * nextdown: (libc)FP Bit Twiddling.
  1647. * nextdownf: (libc)FP Bit Twiddling.
  1648. * nextdownfN: (libc)FP Bit Twiddling.
  1649. * nextdownfNx: (libc)FP Bit Twiddling.
  1650. * nextdownl: (libc)FP Bit Twiddling.
  1651. * nexttoward: (libc)FP Bit Twiddling.
  1652. * nexttowardf: (libc)FP Bit Twiddling.
  1653. * nexttowardl: (libc)FP Bit Twiddling.
  1654. * nextup: (libc)FP Bit Twiddling.
  1655. * nextupf: (libc)FP Bit Twiddling.
  1656. * nextupfN: (libc)FP Bit Twiddling.
  1657. * nextupfNx: (libc)FP Bit Twiddling.
  1658. * nextupl: (libc)FP Bit Twiddling.
  1659. * nftw64: (libc)Working with Directory Trees.
  1660. * nftw: (libc)Working with Directory Trees.
  1661. * ngettext: (libc)Advanced gettext functions.
  1662. * nice: (libc)Traditional Scheduling Functions.
  1663. * nl_langinfo: (libc)The Elegant and Fast Way.
  1664. * nrand48: (libc)SVID Random.
  1665. * nrand48_r: (libc)SVID Random.
  1666. * ntohl: (libc)Byte Order.
  1667. * ntohs: (libc)Byte Order.
  1668. * ntp_adjtime: (libc)Setting and Adjusting the Time.
  1669. * ntp_gettime: (libc)Setting and Adjusting the Time.
  1670. * obstack_1grow: (libc)Growing Objects.
  1671. * obstack_1grow_fast: (libc)Extra Fast Growing.
  1672. * obstack_alignment_mask: (libc)Obstacks Data Alignment.
  1673. * obstack_alloc: (libc)Allocation in an Obstack.
  1674. * obstack_base: (libc)Status of an Obstack.
  1675. * obstack_blank: (libc)Growing Objects.
  1676. * obstack_blank_fast: (libc)Extra Fast Growing.
  1677. * obstack_chunk_size: (libc)Obstack Chunks.
  1678. * obstack_copy0: (libc)Allocation in an Obstack.
  1679. * obstack_copy: (libc)Allocation in an Obstack.
  1680. * obstack_finish: (libc)Growing Objects.
  1681. * obstack_free: (libc)Freeing Obstack Objects.
  1682. * obstack_grow0: (libc)Growing Objects.
  1683. * obstack_grow: (libc)Growing Objects.
  1684. * obstack_init: (libc)Preparing for Obstacks.
  1685. * obstack_int_grow: (libc)Growing Objects.
  1686. * obstack_int_grow_fast: (libc)Extra Fast Growing.
  1687. * obstack_next_free: (libc)Status of an Obstack.
  1688. * obstack_object_size: (libc)Growing Objects.
  1689. * obstack_object_size: (libc)Status of an Obstack.
  1690. * obstack_printf: (libc)Dynamic Output.
  1691. * obstack_ptr_grow: (libc)Growing Objects.
  1692. * obstack_ptr_grow_fast: (libc)Extra Fast Growing.
  1693. * obstack_room: (libc)Extra Fast Growing.
  1694. * obstack_vprintf: (libc)Variable Arguments Output.
  1695. * offsetof: (libc)Structure Measurement.
  1696. * on_exit: (libc)Cleanups on Exit.
  1697. * open64: (libc)Opening and Closing Files.
  1698. * open: (libc)Opening and Closing Files.
  1699. * open_memstream: (libc)String Streams.
  1700. * openat2: (libc)Opening and Closing Files.
  1701. * openat64: (libc)Opening and Closing Files.
  1702. * openat: (libc)Opening and Closing Files.
  1703. * opendir: (libc)Opening a Directory.
  1704. * openlog: (libc)openlog.
  1705. * openpty: (libc)Pseudo-Terminal Pairs.
  1706. * parse_printf_format: (libc)Parsing a Template String.
  1707. * pathconf: (libc)Pathconf.
  1708. * pause: (libc)Using Pause.
  1709. * pclose: (libc)Pipe to a Subprocess.
  1710. * perror: (libc)Error Messages.
  1711. * pidfd_getpid: (libc)Querying a Process.
  1712. * pipe: (libc)Creating a Pipe.
  1713. * pkey_alloc: (libc)Memory Protection.
  1714. * pkey_free: (libc)Memory Protection.
  1715. * pkey_get: (libc)Memory Protection.
  1716. * pkey_mprotect: (libc)Memory Protection.
  1717. * pkey_set: (libc)Memory Protection.
  1718. * poll: (libc)Other Low-Level I/O APIs.
  1719. * popen: (libc)Pipe to a Subprocess.
  1720. * posix_fallocate64: (libc)Storage Allocation.
  1721. * posix_fallocate: (libc)Storage Allocation.
  1722. * posix_memalign: (libc)Aligned Memory Blocks.
  1723. * posix_openpt: (libc)Allocation.
  1724. * pow: (libc)Exponents and Logarithms.
  1725. * powf: (libc)Exponents and Logarithms.
  1726. * powfN: (libc)Exponents and Logarithms.
  1727. * powfNx: (libc)Exponents and Logarithms.
  1728. * powl: (libc)Exponents and Logarithms.
  1729. * pown: (libc)Exponents and Logarithms.
  1730. * pownf: (libc)Exponents and Logarithms.
  1731. * pownfN: (libc)Exponents and Logarithms.
  1732. * pownfNx: (libc)Exponents and Logarithms.
  1733. * pownl: (libc)Exponents and Logarithms.
  1734. * powr: (libc)Exponents and Logarithms.
  1735. * powrf: (libc)Exponents and Logarithms.
  1736. * powrfN: (libc)Exponents and Logarithms.
  1737. * powrfNx: (libc)Exponents and Logarithms.
  1738. * powrl: (libc)Exponents and Logarithms.
  1739. * pread64: (libc)I/O Primitives.
  1740. * pread: (libc)I/O Primitives.
  1741. * preadv2: (libc)Scatter-Gather.
  1742. * preadv64: (libc)Scatter-Gather.
  1743. * preadv64v2: (libc)Scatter-Gather.
  1744. * preadv: (libc)Scatter-Gather.
  1745. * printf: (libc)Formatted Output Functions.
  1746. * printf_size: (libc)Predefined Printf Handlers.
  1747. * printf_size_info: (libc)Predefined Printf Handlers.
  1748. * psignal: (libc)Signal Messages.
  1749. * pthread_attr_destroy: (libc)Creating and Destroying Threads.
  1750. * pthread_attr_getaffinity_np: (libc)Thread CPU Affinity.
  1751. * pthread_attr_getdetachstate: (libc)Creating and Destroying Threads.
  1752. * pthread_attr_getsigmask_np: (libc)Initial Thread Signal Mask.
  1753. * pthread_attr_init: (libc)Creating and Destroying Threads.
  1754. * pthread_attr_setaffinity_np: (libc)Thread CPU Affinity.
  1755. * pthread_attr_setdetachstate: (libc)Creating and Destroying Threads.
  1756. * pthread_attr_setsigmask_np: (libc)Initial Thread Signal Mask.
  1757. * pthread_barrier_destroy: (libc)POSIX Barriers.
  1758. * pthread_barrier_init: (libc)POSIX Barriers.
  1759. * pthread_barrier_wait: (libc)POSIX Barriers.
  1760. * pthread_clockjoin_np: (libc)Joining Threads.
  1761. * pthread_cond_clockwait: (libc)Waiting with Explicit Clocks.
  1762. * pthread_create: (libc)Creating and Destroying Threads.
  1763. * pthread_detach: (libc)Creating and Destroying Threads.
  1764. * pthread_equal: (libc)POSIX Threads Other APIs.
  1765. * pthread_getaffinity_np: (libc)Thread CPU Affinity.
  1766. * pthread_getattr_default_np: (libc)Default Thread Attributes.
  1767. * pthread_getcpuclockid: (libc)POSIX Threads Other APIs.
  1768. * pthread_getname_np: (libc)Thread Names.
  1769. * pthread_getspecific: (libc)Thread-specific Data.
  1770. * pthread_gettid_np: (libc)Process Identification.
  1771. * pthread_join: (libc)Creating and Destroying Threads.
  1772. * pthread_key_create: (libc)Thread-specific Data.
  1773. * pthread_key_delete: (libc)Thread-specific Data.
  1774. * pthread_kill: (libc)Creating and Destroying Threads.
  1775. * pthread_mutex_clocklock: (libc)POSIX Mutexes.
  1776. * pthread_mutex_destroy: (libc)POSIX Mutexes.
  1777. * pthread_mutex_init: (libc)POSIX Mutexes.
  1778. * pthread_mutex_lock: (libc)POSIX Mutexes.
  1779. * pthread_mutex_timedlock: (libc)POSIX Mutexes.
  1780. * pthread_mutex_trylock: (libc)POSIX Mutexes.
  1781. * pthread_mutex_unlock: (libc)POSIX Mutexes.
  1782. * pthread_mutexattr_destroy: (libc)POSIX Mutexes.
  1783. * pthread_mutexattr_gettype: (libc)POSIX Mutexes.
  1784. * pthread_mutexattr_init: (libc)POSIX Mutexes.
  1785. * pthread_mutexattr_settype: (libc)POSIX Mutexes.
  1786. * pthread_once: (libc)POSIX Threads Other APIs.
  1787. * pthread_rwlock_clockrdlock: (libc)Waiting with Explicit Clocks.
  1788. * pthread_rwlock_clockwrlock: (libc)Waiting with Explicit Clocks.
  1789. * pthread_self: (libc)Creating and Destroying Threads.
  1790. * pthread_setaffinity_np: (libc)Thread CPU Affinity.
  1791. * pthread_setattr_default_np: (libc)Default Thread Attributes.
  1792. * pthread_setname_np: (libc)Thread Names.
  1793. * pthread_setspecific: (libc)Thread-specific Data.
  1794. * pthread_sigmask: (libc)POSIX Threads Other APIs.
  1795. * pthread_spin_destroy: (libc)POSIX Spin Locks.
  1796. * pthread_spin_init: (libc)POSIX Spin Locks.
  1797. * pthread_spin_lock: (libc)POSIX Spin Locks.
  1798. * pthread_spin_trylock: (libc)POSIX Spin Locks.
  1799. * pthread_spin_unlock: (libc)POSIX Spin Locks.
  1800. * pthread_timedjoin_np: (libc)Joining Threads.
  1801. * pthread_tryjoin_np: (libc)Joining Threads.
  1802. * ptsname: (libc)Allocation.
  1803. * ptsname_r: (libc)Allocation.
  1804. * putc: (libc)Simple Output.
  1805. * putc_unlocked: (libc)Simple Output.
  1806. * putchar: (libc)Simple Output.
  1807. * putchar_unlocked: (libc)Simple Output.
  1808. * putenv: (libc)Environment Access.
  1809. * putpwent: (libc)Writing a User Entry.
  1810. * puts: (libc)Simple Output.
  1811. * pututline: (libc)Manipulating the Database.
  1812. * pututxline: (libc)XPG Functions.
  1813. * putw: (libc)Simple Output.
  1814. * putwc: (libc)Simple Output.
  1815. * putwc_unlocked: (libc)Simple Output.
  1816. * putwchar: (libc)Simple Output.
  1817. * putwchar_unlocked: (libc)Simple Output.
  1818. * pwrite64: (libc)I/O Primitives.
  1819. * pwrite: (libc)I/O Primitives.
  1820. * pwritev2: (libc)Scatter-Gather.
  1821. * pwritev64: (libc)Scatter-Gather.
  1822. * pwritev64v2: (libc)Scatter-Gather.
  1823. * pwritev: (libc)Scatter-Gather.
  1824. * qecvt: (libc)System V Number Conversion.
  1825. * qecvt_r: (libc)System V Number Conversion.
  1826. * qfcvt: (libc)System V Number Conversion.
  1827. * qfcvt_r: (libc)System V Number Conversion.
  1828. * qgcvt: (libc)System V Number Conversion.
  1829. * qsort: (libc)Array Sort Function.
  1830. * raise: (libc)Signaling Yourself.
  1831. * rand: (libc)ISO Random.
  1832. * rand_r: (libc)ISO Random.
  1833. * random: (libc)BSD Random.
  1834. * random_r: (libc)BSD Random.
  1835. * rawmemchr: (libc)Search Functions.
  1836. * read: (libc)I/O Primitives.
  1837. * readdir64: (libc)Reading/Closing Directory.
  1838. * readdir64_r: (libc)Reading/Closing Directory.
  1839. * readdir: (libc)Reading/Closing Directory.
  1840. * readdir_r: (libc)Reading/Closing Directory.
  1841. * readlink: (libc)Symbolic Links.
  1842. * readv: (libc)Scatter-Gather.
  1843. * realloc: (libc)Changing Block Size.
  1844. * reallocarray: (libc)Changing Block Size.
  1845. * realpath: (libc)Symbolic Links.
  1846. * recv: (libc)Receiving Data.
  1847. * recvfrom: (libc)Receiving Datagrams.
  1848. * recvmsg: (libc)Other Socket APIs.
  1849. * regcomp: (libc)POSIX Regexp Compilation.
  1850. * regerror: (libc)Regexp Cleanup.
  1851. * regexec: (libc)Matching POSIX Regexps.
  1852. * regfree: (libc)Regexp Cleanup.
  1853. * register_printf_function: (libc)Registering New Conversions.
  1854. * remainder: (libc)Remainder Functions.
  1855. * remainderf: (libc)Remainder Functions.
  1856. * remainderfN: (libc)Remainder Functions.
  1857. * remainderfNx: (libc)Remainder Functions.
  1858. * remainderl: (libc)Remainder Functions.
  1859. * remove: (libc)Deleting Files.
  1860. * rename: (libc)Renaming Files.
  1861. * renameat: (libc)Renaming Files.
  1862. * rewind: (libc)File Positioning.
  1863. * rewinddir: (libc)Random Access Directory.
  1864. * rindex: (libc)Search Functions.
  1865. * rint: (libc)Rounding Functions.
  1866. * rintf: (libc)Rounding Functions.
  1867. * rintfN: (libc)Rounding Functions.
  1868. * rintfNx: (libc)Rounding Functions.
  1869. * rintl: (libc)Rounding Functions.
  1870. * rmdir: (libc)Deleting Files.
  1871. * rootn: (libc)Exponents and Logarithms.
  1872. * rootnf: (libc)Exponents and Logarithms.
  1873. * rootnfN: (libc)Exponents and Logarithms.
  1874. * rootnfNx: (libc)Exponents and Logarithms.
  1875. * rootnl: (libc)Exponents and Logarithms.
  1876. * round: (libc)Rounding Functions.
  1877. * roundeven: (libc)Rounding Functions.
  1878. * roundevenf: (libc)Rounding Functions.
  1879. * roundevenfN: (libc)Rounding Functions.
  1880. * roundevenfNx: (libc)Rounding Functions.
  1881. * roundevenl: (libc)Rounding Functions.
  1882. * roundf: (libc)Rounding Functions.
  1883. * roundfN: (libc)Rounding Functions.
  1884. * roundfNx: (libc)Rounding Functions.
  1885. * roundl: (libc)Rounding Functions.
  1886. * rpmatch: (libc)Yes-or-No Questions.
  1887. * rsqrt: (libc)Exponents and Logarithms.
  1888. * rsqrtf: (libc)Exponents and Logarithms.
  1889. * rsqrtfN: (libc)Exponents and Logarithms.
  1890. * rsqrtfNx: (libc)Exponents and Logarithms.
  1891. * rsqrtl: (libc)Exponents and Logarithms.
  1892. * sbrk: (libc)Resizing the Data Segment.
  1893. * scalb: (libc)Normalization Functions.
  1894. * scalbf: (libc)Normalization Functions.
  1895. * scalbl: (libc)Normalization Functions.
  1896. * scalbln: (libc)Normalization Functions.
  1897. * scalblnf: (libc)Normalization Functions.
  1898. * scalblnfN: (libc)Normalization Functions.
  1899. * scalblnfNx: (libc)Normalization Functions.
  1900. * scalblnl: (libc)Normalization Functions.
  1901. * scalbn: (libc)Normalization Functions.
  1902. * scalbnf: (libc)Normalization Functions.
  1903. * scalbnfN: (libc)Normalization Functions.
  1904. * scalbnfNx: (libc)Normalization Functions.
  1905. * scalbnl: (libc)Normalization Functions.
  1906. * scandir64: (libc)Scanning Directory Content.
  1907. * scandir: (libc)Scanning Directory Content.
  1908. * scanf: (libc)Formatted Input Functions.
  1909. * sched_get_priority_max: (libc)Basic Scheduling Functions.
  1910. * sched_get_priority_min: (libc)Basic Scheduling Functions.
  1911. * sched_getaffinity: (libc)CPU Affinity.
  1912. * sched_getattr: (libc)Extensible Scheduling.
  1913. * sched_getcpu: (libc)CPU Affinity.
  1914. * sched_getparam: (libc)Basic Scheduling Functions.
  1915. * sched_getscheduler: (libc)Basic Scheduling Functions.
  1916. * sched_rr_get_interval: (libc)Basic Scheduling Functions.
  1917. * sched_setaffinity: (libc)CPU Affinity.
  1918. * sched_setattr: (libc)Extensible Scheduling.
  1919. * sched_setparam: (libc)Basic Scheduling Functions.
  1920. * sched_setscheduler: (libc)Basic Scheduling Functions.
  1921. * sched_yield: (libc)Basic Scheduling Functions.
  1922. * secure_getenv: (libc)Environment Access.
  1923. * seed48: (libc)SVID Random.
  1924. * seed48_r: (libc)SVID Random.
  1925. * seekdir: (libc)Random Access Directory.
  1926. * select: (libc)Waiting for I/O.
  1927. * sem_clockwait: (libc)POSIX Semaphores.
  1928. * sem_close: (libc)POSIX Semaphores.
  1929. * sem_destroy: (libc)POSIX Semaphores.
  1930. * sem_getvalue: (libc)POSIX Semaphores.
  1931. * sem_init: (libc)POSIX Semaphores.
  1932. * sem_open: (libc)POSIX Semaphores.
  1933. * sem_post: (libc)POSIX Semaphores.
  1934. * sem_timedwait: (libc)POSIX Semaphores.
  1935. * sem_trywait: (libc)POSIX Semaphores.
  1936. * sem_unlink: (libc)POSIX Semaphores.
  1937. * sem_wait: (libc)POSIX Semaphores.
  1938. * semctl: (libc)Semaphores.
  1939. * semget: (libc)Semaphores.
  1940. * semop: (libc)Semaphores.
  1941. * semtimedop: (libc)Semaphores.
  1942. * send: (libc)Sending Data.
  1943. * sendmsg: (libc)Other Socket APIs.
  1944. * sendto: (libc)Sending Datagrams.
  1945. * setbuf: (libc)Controlling Buffering.
  1946. * setbuffer: (libc)Controlling Buffering.
  1947. * setcontext: (libc)System V contexts.
  1948. * setdomainname: (libc)Host Identification.
  1949. * setegid: (libc)Setting Groups.
  1950. * setenv: (libc)Environment Access.
  1951. * seteuid: (libc)Setting User ID.
  1952. * setfsent: (libc)fstab.
  1953. * setgid: (libc)Setting Groups.
  1954. * setgrent: (libc)Scanning All Groups.
  1955. * setgroups: (libc)Setting Groups.
  1956. * sethostent: (libc)Host Names.
  1957. * sethostid: (libc)Host Identification.
  1958. * sethostname: (libc)Host Identification.
  1959. * setitimer: (libc)Setting an Alarm.
  1960. * setjmp: (libc)Non-Local Details.
  1961. * setlinebuf: (libc)Controlling Buffering.
  1962. * setlocale: (libc)Setting the Locale.
  1963. * setlogmask: (libc)setlogmask.
  1964. * setmntent: (libc)mtab.
  1965. * setnetent: (libc)Networks Database.
  1966. * setnetgrent: (libc)Lookup Netgroup.
  1967. * setpayload: (libc)FP Bit Twiddling.
  1968. * setpayloadf: (libc)FP Bit Twiddling.
  1969. * setpayloadfN: (libc)FP Bit Twiddling.
  1970. * setpayloadfNx: (libc)FP Bit Twiddling.
  1971. * setpayloadl: (libc)FP Bit Twiddling.
  1972. * setpayloadsig: (libc)FP Bit Twiddling.
  1973. * setpayloadsigf: (libc)FP Bit Twiddling.
  1974. * setpayloadsigfN: (libc)FP Bit Twiddling.
  1975. * setpayloadsigfNx: (libc)FP Bit Twiddling.
  1976. * setpayloadsigl: (libc)FP Bit Twiddling.
  1977. * setpgid: (libc)Process Group Functions.
  1978. * setpgrp: (libc)Process Group Functions.
  1979. * setpriority: (libc)Traditional Scheduling Functions.
  1980. * setprotoent: (libc)Protocols Database.
  1981. * setpwent: (libc)Scanning All Users.
  1982. * setregid: (libc)Setting Groups.
  1983. * setreuid: (libc)Setting User ID.
  1984. * setrlimit64: (libc)Limits on Resources.
  1985. * setrlimit: (libc)Limits on Resources.
  1986. * setservent: (libc)Services Database.
  1987. * setsid: (libc)Process Group Functions.
  1988. * setsockopt: (libc)Socket Option Functions.
  1989. * setstate: (libc)BSD Random.
  1990. * setstate_r: (libc)BSD Random.
  1991. * settimeofday: (libc)Setting and Adjusting the Time.
  1992. * setuid: (libc)Setting User ID.
  1993. * setutent: (libc)Manipulating the Database.
  1994. * setutxent: (libc)XPG Functions.
  1995. * setvbuf: (libc)Controlling Buffering.
  1996. * shm_open: (libc)Memory-mapped I/O.
  1997. * shm_unlink: (libc)Memory-mapped I/O.
  1998. * shutdown: (libc)Closing a Socket.
  1999. * sigabbrev_np: (libc)Signal Messages.
  2000. * sigaction: (libc)Advanced Signal Handling.
  2001. * sigaddset: (libc)Signal Sets.
  2002. * sigaltstack: (libc)Signal Stack.
  2003. * sigblock: (libc)BSD Signal Handling.
  2004. * sigdelset: (libc)Signal Sets.
  2005. * sigdescr_np: (libc)Signal Messages.
  2006. * sigemptyset: (libc)Signal Sets.
  2007. * sigfillset: (libc)Signal Sets.
  2008. * siginterrupt: (libc)BSD Signal Handling.
  2009. * sigismember: (libc)Signal Sets.
  2010. * siglongjmp: (libc)Non-Local Exits and Signals.
  2011. * sigmask: (libc)BSD Signal Handling.
  2012. * signal: (libc)Basic Signal Handling.
  2013. * signbit: (libc)FP Bit Twiddling.
  2014. * significand: (libc)Normalization Functions.
  2015. * significandf: (libc)Normalization Functions.
  2016. * significandl: (libc)Normalization Functions.
  2017. * sigpause: (libc)BSD Signal Handling.
  2018. * sigpending: (libc)Checking for Pending Signals.
  2019. * sigprocmask: (libc)Process Signal Mask.
  2020. * sigsetjmp: (libc)Non-Local Exits and Signals.
  2021. * sigsetmask: (libc)BSD Signal Handling.
  2022. * sigstack: (libc)Signal Stack.
  2023. * sigsuspend: (libc)Sigsuspend.
  2024. * sin: (libc)Trig Functions.
  2025. * sincos: (libc)Trig Functions.
  2026. * sincosf: (libc)Trig Functions.
  2027. * sincosfN: (libc)Trig Functions.
  2028. * sincosfNx: (libc)Trig Functions.
  2029. * sincosl: (libc)Trig Functions.
  2030. * sinf: (libc)Trig Functions.
  2031. * sinfN: (libc)Trig Functions.
  2032. * sinfNx: (libc)Trig Functions.
  2033. * sinh: (libc)Hyperbolic Functions.
  2034. * sinhf: (libc)Hyperbolic Functions.
  2035. * sinhfN: (libc)Hyperbolic Functions.
  2036. * sinhfNx: (libc)Hyperbolic Functions.
  2037. * sinhl: (libc)Hyperbolic Functions.
  2038. * sinl: (libc)Trig Functions.
  2039. * sinpi: (libc)Trig Functions.
  2040. * sinpif: (libc)Trig Functions.
  2041. * sinpifN: (libc)Trig Functions.
  2042. * sinpifNx: (libc)Trig Functions.
  2043. * sinpil: (libc)Trig Functions.
  2044. * sleep: (libc)Sleeping.
  2045. * snprintf: (libc)Formatted Output Functions.
  2046. * socket: (libc)Creating a Socket.
  2047. * socketpair: (libc)Socket Pairs.
  2048. * sprintf: (libc)Formatted Output Functions.
  2049. * sqrt: (libc)Exponents and Logarithms.
  2050. * sqrtf: (libc)Exponents and Logarithms.
  2051. * sqrtfN: (libc)Exponents and Logarithms.
  2052. * sqrtfNx: (libc)Exponents and Logarithms.
  2053. * sqrtl: (libc)Exponents and Logarithms.
  2054. * srand48: (libc)SVID Random.
  2055. * srand48_r: (libc)SVID Random.
  2056. * srand: (libc)ISO Random.
  2057. * srandom: (libc)BSD Random.
  2058. * srandom_r: (libc)BSD Random.
  2059. * sscanf: (libc)Formatted Input Functions.
  2060. * ssignal: (libc)Basic Signal Handling.
  2061. * stat64: (libc)Reading Attributes.
  2062. * stat: (libc)Reading Attributes.
  2063. * stdc_bit_ceil_uc: (libc)Bit Manipulation.
  2064. * stdc_bit_ceil_ui: (libc)Bit Manipulation.
  2065. * stdc_bit_ceil_ul: (libc)Bit Manipulation.
  2066. * stdc_bit_ceil_ull: (libc)Bit Manipulation.
  2067. * stdc_bit_ceil_us: (libc)Bit Manipulation.
  2068. * stdc_bit_floor_uc: (libc)Bit Manipulation.
  2069. * stdc_bit_floor_ui: (libc)Bit Manipulation.
  2070. * stdc_bit_floor_ul: (libc)Bit Manipulation.
  2071. * stdc_bit_floor_ull: (libc)Bit Manipulation.
  2072. * stdc_bit_floor_us: (libc)Bit Manipulation.
  2073. * stdc_bit_width_uc: (libc)Bit Manipulation.
  2074. * stdc_bit_width_ui: (libc)Bit Manipulation.
  2075. * stdc_bit_width_ul: (libc)Bit Manipulation.
  2076. * stdc_bit_width_ull: (libc)Bit Manipulation.
  2077. * stdc_bit_width_us: (libc)Bit Manipulation.
  2078. * stdc_count_ones_uc: (libc)Bit Manipulation.
  2079. * stdc_count_ones_ui: (libc)Bit Manipulation.
  2080. * stdc_count_ones_ul: (libc)Bit Manipulation.
  2081. * stdc_count_ones_ull: (libc)Bit Manipulation.
  2082. * stdc_count_ones_us: (libc)Bit Manipulation.
  2083. * stdc_count_zeros_uc: (libc)Bit Manipulation.
  2084. * stdc_count_zeros_ui: (libc)Bit Manipulation.
  2085. * stdc_count_zeros_ul: (libc)Bit Manipulation.
  2086. * stdc_count_zeros_ull: (libc)Bit Manipulation.
  2087. * stdc_count_zeros_us: (libc)Bit Manipulation.
  2088. * stdc_first_leading_one_uc: (libc)Bit Manipulation.
  2089. * stdc_first_leading_one_ui: (libc)Bit Manipulation.
  2090. * stdc_first_leading_one_ul: (libc)Bit Manipulation.
  2091. * stdc_first_leading_one_ull: (libc)Bit Manipulation.
  2092. * stdc_first_leading_one_us: (libc)Bit Manipulation.
  2093. * stdc_first_leading_zero_uc: (libc)Bit Manipulation.
  2094. * stdc_first_leading_zero_ui: (libc)Bit Manipulation.
  2095. * stdc_first_leading_zero_ul: (libc)Bit Manipulation.
  2096. * stdc_first_leading_zero_ull: (libc)Bit Manipulation.
  2097. * stdc_first_leading_zero_us: (libc)Bit Manipulation.
  2098. * stdc_first_trailing_one_uc: (libc)Bit Manipulation.
  2099. * stdc_first_trailing_one_ui: (libc)Bit Manipulation.
  2100. * stdc_first_trailing_one_ul: (libc)Bit Manipulation.
  2101. * stdc_first_trailing_one_ull: (libc)Bit Manipulation.
  2102. * stdc_first_trailing_one_us: (libc)Bit Manipulation.
  2103. * stdc_first_trailing_zero_uc: (libc)Bit Manipulation.
  2104. * stdc_first_trailing_zero_ui: (libc)Bit Manipulation.
  2105. * stdc_first_trailing_zero_ul: (libc)Bit Manipulation.
  2106. * stdc_first_trailing_zero_ull: (libc)Bit Manipulation.
  2107. * stdc_first_trailing_zero_us: (libc)Bit Manipulation.
  2108. * stdc_has_single_bit_uc: (libc)Bit Manipulation.
  2109. * stdc_has_single_bit_ui: (libc)Bit Manipulation.
  2110. * stdc_has_single_bit_ul: (libc)Bit Manipulation.
  2111. * stdc_has_single_bit_ull: (libc)Bit Manipulation.
  2112. * stdc_has_single_bit_us: (libc)Bit Manipulation.
  2113. * stdc_leading_ones_uc: (libc)Bit Manipulation.
  2114. * stdc_leading_ones_ui: (libc)Bit Manipulation.
  2115. * stdc_leading_ones_ul: (libc)Bit Manipulation.
  2116. * stdc_leading_ones_ull: (libc)Bit Manipulation.
  2117. * stdc_leading_ones_us: (libc)Bit Manipulation.
  2118. * stdc_leading_zeros_uc: (libc)Bit Manipulation.
  2119. * stdc_leading_zeros_ui: (libc)Bit Manipulation.
  2120. * stdc_leading_zeros_ul: (libc)Bit Manipulation.
  2121. * stdc_leading_zeros_ull: (libc)Bit Manipulation.
  2122. * stdc_leading_zeros_us: (libc)Bit Manipulation.
  2123. * stdc_trailing_ones_uc: (libc)Bit Manipulation.
  2124. * stdc_trailing_ones_ui: (libc)Bit Manipulation.
  2125. * stdc_trailing_ones_ul: (libc)Bit Manipulation.
  2126. * stdc_trailing_ones_ull: (libc)Bit Manipulation.
  2127. * stdc_trailing_ones_us: (libc)Bit Manipulation.
  2128. * stdc_trailing_zeros_uc: (libc)Bit Manipulation.
  2129. * stdc_trailing_zeros_ui: (libc)Bit Manipulation.
  2130. * stdc_trailing_zeros_ul: (libc)Bit Manipulation.
  2131. * stdc_trailing_zeros_ull: (libc)Bit Manipulation.
  2132. * stdc_trailing_zeros_us: (libc)Bit Manipulation.
  2133. * stime: (libc)Setting and Adjusting the Time.
  2134. * stpcpy: (libc)Copying Strings and Arrays.
  2135. * stpncpy: (libc)Truncating Strings.
  2136. * strcasecmp: (libc)String/Array Comparison.
  2137. * strcasestr: (libc)Search Functions.
  2138. * strcat: (libc)Concatenating Strings.
  2139. * strchr: (libc)Search Functions.
  2140. * strchrnul: (libc)Search Functions.
  2141. * strcmp: (libc)String/Array Comparison.
  2142. * strcoll: (libc)Collation Functions.
  2143. * strcpy: (libc)Copying Strings and Arrays.
  2144. * strcspn: (libc)Search Functions.
  2145. * strdup: (libc)Copying Strings and Arrays.
  2146. * strdupa: (libc)Copying Strings and Arrays.
  2147. * strerror: (libc)Error Messages.
  2148. * strerror_l: (libc)Error Messages.
  2149. * strerror_r: (libc)Error Messages.
  2150. * strerror_r: (libc)Error Messages.
  2151. * strerrordesc_np: (libc)Error Messages.
  2152. * strerrorname_np: (libc)Error Messages.
  2153. * strfmon: (libc)Formatting Numbers.
  2154. * strfromd: (libc)Printing of Floats.
  2155. * strfromf: (libc)Printing of Floats.
  2156. * strfromfN: (libc)Printing of Floats.
  2157. * strfromfNx: (libc)Printing of Floats.
  2158. * strfroml: (libc)Printing of Floats.
  2159. * strfry: (libc)Shuffling Bytes.
  2160. * strftime: (libc)Formatting Calendar Time.
  2161. * strftime_l: (libc)Formatting Calendar Time.
  2162. * strlcat: (libc)Truncating Strings.
  2163. * strlcpy: (libc)Truncating Strings.
  2164. * strlen: (libc)String Length.
  2165. * strncasecmp: (libc)String/Array Comparison.
  2166. * strncat: (libc)Truncating Strings.
  2167. * strncmp: (libc)String/Array Comparison.
  2168. * strncpy: (libc)Truncating Strings.
  2169. * strndup: (libc)Truncating Strings.
  2170. * strndupa: (libc)Truncating Strings.
  2171. * strnlen: (libc)String Length.
  2172. * strpbrk: (libc)Search Functions.
  2173. * strptime: (libc)Low-Level Time String Parsing.
  2174. * strrchr: (libc)Search Functions.
  2175. * strsep: (libc)Finding Tokens in a String.
  2176. * strsignal: (libc)Signal Messages.
  2177. * strspn: (libc)Search Functions.
  2178. * strstr: (libc)Search Functions.
  2179. * strtod: (libc)Parsing of Floats.
  2180. * strtof: (libc)Parsing of Floats.
  2181. * strtofN: (libc)Parsing of Floats.
  2182. * strtofNx: (libc)Parsing of Floats.
  2183. * strtoimax: (libc)Parsing of Integers.
  2184. * strtok: (libc)Finding Tokens in a String.
  2185. * strtok_r: (libc)Finding Tokens in a String.
  2186. * strtol: (libc)Parsing of Integers.
  2187. * strtold: (libc)Parsing of Floats.
  2188. * strtoll: (libc)Parsing of Integers.
  2189. * strtoq: (libc)Parsing of Integers.
  2190. * strtoul: (libc)Parsing of Integers.
  2191. * strtoull: (libc)Parsing of Integers.
  2192. * strtoumax: (libc)Parsing of Integers.
  2193. * strtouq: (libc)Parsing of Integers.
  2194. * strverscmp: (libc)String/Array Comparison.
  2195. * strxfrm: (libc)Collation Functions.
  2196. * stty: (libc)BSD Terminal Modes.
  2197. * swapcontext: (libc)System V contexts.
  2198. * swprintf: (libc)Formatted Output Functions.
  2199. * swscanf: (libc)Formatted Input Functions.
  2200. * symlink: (libc)Symbolic Links.
  2201. * sync: (libc)Synchronizing I/O.
  2202. * syscall: (libc)System Calls.
  2203. * sysconf: (libc)Sysconf Definition.
  2204. * syslog: (libc)syslog; vsyslog.
  2205. * system: (libc)Running a Command.
  2206. * sysv_signal: (libc)Basic Signal Handling.
  2207. * tan: (libc)Trig Functions.
  2208. * tanf: (libc)Trig Functions.
  2209. * tanfN: (libc)Trig Functions.
  2210. * tanfNx: (libc)Trig Functions.
  2211. * tanh: (libc)Hyperbolic Functions.
  2212. * tanhf: (libc)Hyperbolic Functions.
  2213. * tanhfN: (libc)Hyperbolic Functions.
  2214. * tanhfNx: (libc)Hyperbolic Functions.
  2215. * tanhl: (libc)Hyperbolic Functions.
  2216. * tanl: (libc)Trig Functions.
  2217. * tanpi: (libc)Trig Functions.
  2218. * tanpif: (libc)Trig Functions.
  2219. * tanpifN: (libc)Trig Functions.
  2220. * tanpifNx: (libc)Trig Functions.
  2221. * tanpil: (libc)Trig Functions.
  2222. * tcdrain: (libc)Line Control.
  2223. * tcflow: (libc)Line Control.
  2224. * tcflush: (libc)Line Control.
  2225. * tcgetattr: (libc)Mode Functions.
  2226. * tcgetpgrp: (libc)Terminal Access Functions.
  2227. * tcgetsid: (libc)Terminal Access Functions.
  2228. * tcsendbreak: (libc)Line Control.
  2229. * tcsetattr: (libc)Mode Functions.
  2230. * tcsetpgrp: (libc)Terminal Access Functions.
  2231. * tdelete: (libc)Tree Search Function.
  2232. * tdestroy: (libc)Tree Search Function.
  2233. * telldir: (libc)Random Access Directory.
  2234. * tempnam: (libc)Temporary Files.
  2235. * textdomain: (libc)Locating gettext catalog.
  2236. * tfind: (libc)Tree Search Function.
  2237. * tgamma: (libc)Special Functions.
  2238. * tgammaf: (libc)Special Functions.
  2239. * tgammafN: (libc)Special Functions.
  2240. * tgammafNx: (libc)Special Functions.
  2241. * tgammal: (libc)Special Functions.
  2242. * tgkill: (libc)Signaling Another Process.
  2243. * thrd_create: (libc)ISO C Thread Management.
  2244. * thrd_current: (libc)ISO C Thread Management.
  2245. * thrd_detach: (libc)ISO C Thread Management.
  2246. * thrd_equal: (libc)ISO C Thread Management.
  2247. * thrd_exit: (libc)ISO C Thread Management.
  2248. * thrd_join: (libc)ISO C Thread Management.
  2249. * thrd_sleep: (libc)ISO C Thread Management.
  2250. * thrd_yield: (libc)ISO C Thread Management.
  2251. * time: (libc)Getting the Time.
  2252. * timegm: (libc)Broken-down Time.
  2253. * timelocal: (libc)Broken-down Time.
  2254. * times: (libc)Processor Time.
  2255. * timespec_get: (libc)Getting the Time.
  2256. * timespec_getres: (libc)Getting the Time.
  2257. * tmpfile64: (libc)Temporary Files.
  2258. * tmpfile: (libc)Temporary Files.
  2259. * tmpnam: (libc)Temporary Files.
  2260. * tmpnam_r: (libc)Temporary Files.
  2261. * toascii: (libc)Case Conversion.
  2262. * tolower: (libc)Case Conversion.
  2263. * totalorder: (libc)FP Comparison Functions.
  2264. * totalorderf: (libc)FP Comparison Functions.
  2265. * totalorderfN: (libc)FP Comparison Functions.
  2266. * totalorderfNx: (libc)FP Comparison Functions.
  2267. * totalorderl: (libc)FP Comparison Functions.
  2268. * totalordermag: (libc)FP Comparison Functions.
  2269. * totalordermagf: (libc)FP Comparison Functions.
  2270. * totalordermagfN: (libc)FP Comparison Functions.
  2271. * totalordermagfNx: (libc)FP Comparison Functions.
  2272. * totalordermagl: (libc)FP Comparison Functions.
  2273. * toupper: (libc)Case Conversion.
  2274. * towctrans: (libc)Wide Character Case Conversion.
  2275. * towlower: (libc)Wide Character Case Conversion.
  2276. * towupper: (libc)Wide Character Case Conversion.
  2277. * trunc: (libc)Rounding Functions.
  2278. * truncate64: (libc)File Size.
  2279. * truncate: (libc)File Size.
  2280. * truncf: (libc)Rounding Functions.
  2281. * truncfN: (libc)Rounding Functions.
  2282. * truncfNx: (libc)Rounding Functions.
  2283. * truncl: (libc)Rounding Functions.
  2284. * tsearch: (libc)Tree Search Function.
  2285. * tss_create: (libc)ISO C Thread-local Storage.
  2286. * tss_delete: (libc)ISO C Thread-local Storage.
  2287. * tss_get: (libc)ISO C Thread-local Storage.
  2288. * tss_set: (libc)ISO C Thread-local Storage.
  2289. * ttyname: (libc)Is It a Terminal.
  2290. * ttyname_r: (libc)Is It a Terminal.
  2291. * twalk: (libc)Tree Search Function.
  2292. * twalk_r: (libc)Tree Search Function.
  2293. * tzset: (libc)Time Zone State.
  2294. * uabs: (libc)Absolute Value.
  2295. * ufromfp: (libc)Rounding Functions.
  2296. * ufromfpf: (libc)Rounding Functions.
  2297. * ufromfpfN: (libc)Rounding Functions.
  2298. * ufromfpfNx: (libc)Rounding Functions.
  2299. * ufromfpl: (libc)Rounding Functions.
  2300. * ufromfpx: (libc)Rounding Functions.
  2301. * ufromfpxf: (libc)Rounding Functions.
  2302. * ufromfpxfN: (libc)Rounding Functions.
  2303. * ufromfpxfNx: (libc)Rounding Functions.
  2304. * ufromfpxl: (libc)Rounding Functions.
  2305. * ulabs: (libc)Absolute Value.
  2306. * ulimit: (libc)Limits on Resources.
  2307. * ullabs: (libc)Absolute Value.
  2308. * umask: (libc)Setting Permissions.
  2309. * umaxabs: (libc)Absolute Value.
  2310. * umount2: (libc)Mount-Unmount-Remount.
  2311. * umount: (libc)Mount-Unmount-Remount.
  2312. * uname: (libc)Platform Type.
  2313. * ungetc: (libc)How Unread.
  2314. * ungetwc: (libc)How Unread.
  2315. * unlink: (libc)Deleting Files.
  2316. * unlinkat: (libc)Deleting Files.
  2317. * unlockpt: (libc)Allocation.
  2318. * unsetenv: (libc)Environment Access.
  2319. * updwtmp: (libc)Manipulating the Database.
  2320. * utime: (libc)File Times.
  2321. * utimensat: (libc)File Times.
  2322. * utimes: (libc)File Times.
  2323. * utmpname: (libc)Manipulating the Database.
  2324. * utmpxname: (libc)XPG Functions.
  2325. * va_arg: (libc)Argument Macros.
  2326. * va_copy: (libc)Argument Macros.
  2327. * va_end: (libc)Argument Macros.
  2328. * va_start: (libc)Argument Macros.
  2329. * valloc: (libc)Aligned Memory Blocks.
  2330. * vasprintf: (libc)Variable Arguments Output.
  2331. * vdprintf: (libc)Variable Arguments Output.
  2332. * verr: (libc)Error Messages.
  2333. * verrx: (libc)Error Messages.
  2334. * versionsort64: (libc)Scanning Directory Content.
  2335. * versionsort: (libc)Scanning Directory Content.
  2336. * vfork: (libc)Creating a Process.
  2337. * vfprintf: (libc)Variable Arguments Output.
  2338. * vfscanf: (libc)Variable Arguments Input.
  2339. * vfwprintf: (libc)Variable Arguments Output.
  2340. * vfwscanf: (libc)Variable Arguments Input.
  2341. * vlimit: (libc)Limits on Resources.
  2342. * vprintf: (libc)Variable Arguments Output.
  2343. * vscanf: (libc)Variable Arguments Input.
  2344. * vsnprintf: (libc)Variable Arguments Output.
  2345. * vsprintf: (libc)Variable Arguments Output.
  2346. * vsscanf: (libc)Variable Arguments Input.
  2347. * vswprintf: (libc)Variable Arguments Output.
  2348. * vswscanf: (libc)Variable Arguments Input.
  2349. * vsyslog: (libc)syslog; vsyslog.
  2350. * vwarn: (libc)Error Messages.
  2351. * vwarnx: (libc)Error Messages.
  2352. * vwprintf: (libc)Variable Arguments Output.
  2353. * vwscanf: (libc)Variable Arguments Input.
  2354. * wait3: (libc)BSD Wait Functions.
  2355. * wait4: (libc)Process Completion.
  2356. * wait: (libc)Process Completion.
  2357. * waitpid: (libc)Process Completion.
  2358. * warn: (libc)Error Messages.
  2359. * warnx: (libc)Error Messages.
  2360. * wcpcpy: (libc)Copying Strings and Arrays.
  2361. * wcpncpy: (libc)Truncating Strings.
  2362. * wcrtomb: (libc)Converting a Character.
  2363. * wcscasecmp: (libc)String/Array Comparison.
  2364. * wcscat: (libc)Concatenating Strings.
  2365. * wcschr: (libc)Search Functions.
  2366. * wcschrnul: (libc)Search Functions.
  2367. * wcscmp: (libc)String/Array Comparison.
  2368. * wcscoll: (libc)Collation Functions.
  2369. * wcscpy: (libc)Copying Strings and Arrays.
  2370. * wcscspn: (libc)Search Functions.
  2371. * wcsdup: (libc)Copying Strings and Arrays.
  2372. * wcsftime: (libc)Formatting Calendar Time.
  2373. * wcslcat: (libc)Truncating Strings.
  2374. * wcslcpy: (libc)Truncating Strings.
  2375. * wcslen: (libc)String Length.
  2376. * wcsncasecmp: (libc)String/Array Comparison.
  2377. * wcsncat: (libc)Truncating Strings.
  2378. * wcsncmp: (libc)String/Array Comparison.
  2379. * wcsncpy: (libc)Truncating Strings.
  2380. * wcsnlen: (libc)String Length.
  2381. * wcsnrtombs: (libc)Converting Strings.
  2382. * wcspbrk: (libc)Search Functions.
  2383. * wcsrchr: (libc)Search Functions.
  2384. * wcsrtombs: (libc)Converting Strings.
  2385. * wcsspn: (libc)Search Functions.
  2386. * wcsstr: (libc)Search Functions.
  2387. * wcstod: (libc)Parsing of Floats.
  2388. * wcstof: (libc)Parsing of Floats.
  2389. * wcstofN: (libc)Parsing of Floats.
  2390. * wcstofNx: (libc)Parsing of Floats.
  2391. * wcstoimax: (libc)Parsing of Integers.
  2392. * wcstok: (libc)Finding Tokens in a String.
  2393. * wcstol: (libc)Parsing of Integers.
  2394. * wcstold: (libc)Parsing of Floats.
  2395. * wcstoll: (libc)Parsing of Integers.
  2396. * wcstombs: (libc)Non-reentrant String Conversion.
  2397. * wcstoq: (libc)Parsing of Integers.
  2398. * wcstoul: (libc)Parsing of Integers.
  2399. * wcstoull: (libc)Parsing of Integers.
  2400. * wcstoumax: (libc)Parsing of Integers.
  2401. * wcstouq: (libc)Parsing of Integers.
  2402. * wcswcs: (libc)Search Functions.
  2403. * wcsxfrm: (libc)Collation Functions.
  2404. * wctob: (libc)Converting a Character.
  2405. * wctomb: (libc)Non-reentrant Character Conversion.
  2406. * wctrans: (libc)Wide Character Case Conversion.
  2407. * wctype: (libc)Classification of Wide Characters.
  2408. * wmemchr: (libc)Search Functions.
  2409. * wmemcmp: (libc)String/Array Comparison.
  2410. * wmemcpy: (libc)Copying Strings and Arrays.
  2411. * wmemmove: (libc)Copying Strings and Arrays.
  2412. * wmempcpy: (libc)Copying Strings and Arrays.
  2413. * wmemset: (libc)Copying Strings and Arrays.
  2414. * wordexp: (libc)Calling Wordexp.
  2415. * wordfree: (libc)Calling Wordexp.
  2416. * wprintf: (libc)Formatted Output Functions.
  2417. * write: (libc)I/O Primitives.
  2418. * writev: (libc)Scatter-Gather.
  2419. * wscanf: (libc)Formatted Input Functions.
  2420. * y0: (libc)Special Functions.
  2421. * y0f: (libc)Special Functions.
  2422. * y0fN: (libc)Special Functions.
  2423. * y0fNx: (libc)Special Functions.
  2424. * y0l: (libc)Special Functions.
  2425. * y1: (libc)Special Functions.
  2426. * y1f: (libc)Special Functions.
  2427. * y1fN: (libc)Special Functions.
  2428. * y1fNx: (libc)Special Functions.
  2429. * y1l: (libc)Special Functions.
  2430. * yn: (libc)Special Functions.
  2431. * ynf: (libc)Special Functions.
  2432. * ynfN: (libc)Special Functions.
  2433. * ynfNx: (libc)Special Functions.
  2434. * ynl: (libc)Special Functions.
  2435. END-INFO-DIR-ENTRY
  2436. 
  2437. File: libc.info, Node: System Configuration, Next: Cryptographic Functions, Prev: System Management, Up: Top
  2438. 33 System Configuration Parameters
  2439. **********************************
  2440. The functions and macros listed in this chapter give information about
  2441. configuration parameters of the operating system--for example, capacity
  2442. limits, presence of optional POSIX features, and the default path for
  2443. executable files (*note String Parameters::).
  2444. * Menu:
  2445. * General Limits:: Constants and functions that describe
  2446. various process-related limits that have
  2447. one uniform value for any given machine.
  2448. * System Options:: Optional POSIX features.
  2449. * Version Supported:: Version numbers of POSIX.1 and POSIX.2.
  2450. * Sysconf:: Getting specific configuration values
  2451. of general limits and system options.
  2452. * Minimums:: Minimum values for general limits.
  2453. * Limits for Files:: Size limitations that pertain to individual files.
  2454. These can vary between file systems
  2455. or even from file to file.
  2456. * Options for Files:: Optional features that some files may support.
  2457. * File Minimums:: Minimum values for file limits.
  2458. * Pathconf:: Getting the limit values for a particular file.
  2459. * Utility Limits:: Capacity limits of some POSIX.2 utility programs.
  2460. * Utility Minimums:: Minimum allowable values of those limits.
  2461. * String Parameters:: Getting the default search path.
  2462. 
  2463. File: libc.info, Node: General Limits, Next: System Options, Up: System Configuration
  2464. 33.1 General Capacity Limits
  2465. ============================
  2466. The POSIX.1 and POSIX.2 standards specify a number of parameters that
  2467. describe capacity limitations of the system. These limits can be fixed
  2468. constants for a given operating system, or they can vary from machine to
  2469. machine. For example, some limit values may be configurable by the
  2470. system administrator, either at run time or by rebuilding the kernel,
  2471. and this should not require recompiling application programs.
  2472. Each of the following limit parameters has a macro that is defined in
  2473. ‘limits.h’ only if the system has a fixed, uniform limit for the
  2474. parameter in question. If the system allows different file systems or
  2475. files to have different limits, then the macro is undefined; use
  2476. ‘sysconf’ to find out the limit that applies at a particular time on a
  2477. particular machine. *Note Sysconf::.
  2478. Each of these parameters also has another macro, with a name starting
  2479. with ‘_POSIX’, which gives the lowest value that the limit is allowed to
  2480. have on _any_ POSIX system. *Note Minimums::.
  2481. -- Macro: int ARG_MAX
  2482. If defined, the unvarying maximum combined length of the ARGV and
  2483. ENVIRON arguments that can be passed to the ‘exec’ functions.
  2484. -- Macro: int CHILD_MAX
  2485. If defined, the unvarying maximum number of processes that can
  2486. exist with the same real user ID at any one time. In BSD and GNU,
  2487. this is controlled by the ‘RLIMIT_NPROC’ resource limit; *note
  2488. Limits on Resources::.
  2489. -- Macro: int OPEN_MAX
  2490. If defined, the unvarying maximum number of files that a single
  2491. process can have open simultaneously. In BSD and GNU, this is
  2492. controlled by the ‘RLIMIT_NOFILE’ resource limit; *note Limits on
  2493. Resources::.
  2494. -- Macro: int STREAM_MAX
  2495. If defined, the unvarying maximum number of streams that a single
  2496. process can have open simultaneously. *Note Opening Streams::.
  2497. -- Macro: int TZNAME_MAX
  2498. If defined, the unvarying maximum length of a time zone
  2499. abbreviation. *Note TZ Variable::.
  2500. These limit macros are always defined in ‘limits.h’.
  2501. -- Macro: int NGROUPS_MAX
  2502. The maximum number of supplementary group IDs that one process can
  2503. have.
  2504. The value of this macro is actually a lower bound for the maximum.
  2505. That is, you can count on being able to have that many
  2506. supplementary group IDs, but a particular machine might let you
  2507. have even more. You can use ‘sysconf’ to see whether a particular
  2508. machine will let you have more (*note Sysconf::).
  2509. -- Macro: ssize_t SSIZE_MAX
  2510. The largest value that can fit in an object of type ‘ssize_t’.
  2511. Effectively, this is the limit on the number of bytes that can be
  2512. read or written in a single operation.
  2513. This macro is defined in all POSIX systems because this limit is
  2514. never configurable.
  2515. -- Macro: int RE_DUP_MAX
  2516. The largest number of repetitions you are guaranteed is allowed in
  2517. the construct ‘\{MIN,MAX\}’ in a regular expression.
  2518. The value of this macro is actually a lower bound for the maximum.
  2519. That is, you can count on being able to have that many repetitions,
  2520. but a particular machine might let you have even more. You can use
  2521. ‘sysconf’ to see whether a particular machine will let you have
  2522. more (*note Sysconf::). And even the value that ‘sysconf’ tells
  2523. you is just a lower bound--larger values might work.
  2524. This macro is defined in all POSIX.2 systems, because POSIX.2 says
  2525. it should always be defined even if there is no specific imposed
  2526. limit.
  2527. 
  2528. File: libc.info, Node: System Options, Next: Version Supported, Prev: General Limits, Up: System Configuration
  2529. 33.2 Overall System Options
  2530. ===========================
  2531. POSIX defines certain system-specific options that not all POSIX systems
  2532. support. Since these options are provided in the kernel, not in the
  2533. library, simply using the GNU C Library does not guarantee any of these
  2534. features are supported; it depends on the system you are using.
  2535. You can test for the availability of a given option using the macros
  2536. in this section, together with the function ‘sysconf’. The macros are
  2537. defined only if you include ‘unistd.h’.
  2538. For the following macros, if the macro is defined in ‘unistd.h’, then
  2539. the option is supported. Otherwise, the option may or may not be
  2540. supported; use ‘sysconf’ to find out. *Note Sysconf::.
  2541. -- Macro: int _POSIX_JOB_CONTROL
  2542. If this symbol is defined, it indicates that the system supports
  2543. job control. Otherwise, the implementation behaves as if all
  2544. processes within a session belong to a single process group. *Note
  2545. Job Control::. Systems conforming to the 2001 revision of POSIX,
  2546. or newer, will always define this symbol.
  2547. -- Macro: int _POSIX_SAVED_IDS
  2548. If this symbol is defined, it indicates that the system remembers
  2549. the effective user and group IDs of a process before it executes an
  2550. executable file with the set-user-ID or set-group-ID bits set, and
  2551. that explicitly changing the effective user or group IDs back to
  2552. these values is permitted. If this option is not defined, then if
  2553. a nonprivileged process changes its effective user or group ID to
  2554. the real user or group ID of the process, it can't change it back
  2555. again. *Note Enable/Disable Setuid::.
  2556. For the following macros, if the macro is defined in ‘unistd.h’, then
  2557. its value indicates whether the option is supported. A value of ‘-1’
  2558. means no, and any other value means yes. If the macro is not defined,
  2559. then the option may or may not be supported; use ‘sysconf’ to find out.
  2560. *Note Sysconf::.
  2561. -- Macro: int _POSIX2_C_DEV
  2562. If this symbol is defined, it indicates that the system has the
  2563. POSIX.2 C compiler command, ‘c89’. The GNU C Library always
  2564. defines this as ‘1’, on the assumption that you would not have
  2565. installed it if you didn't have a C compiler.
  2566. -- Macro: int _POSIX2_FORT_DEV
  2567. If this symbol is defined, it indicates that the system has the
  2568. POSIX.2 Fortran compiler command, ‘fort77’. The GNU C Library
  2569. never defines this, because we don't know what the system has.
  2570. -- Macro: int _POSIX2_FORT_RUN
  2571. If this symbol is defined, it indicates that the system has the
  2572. POSIX.2 ‘asa’ command to interpret Fortran carriage control. The
  2573. GNU C Library never defines this, because we don't know what the
  2574. system has.
  2575. -- Macro: int _POSIX2_LOCALEDEF
  2576. If this symbol is defined, it indicates that the system has the
  2577. POSIX.2 ‘localedef’ command. The GNU C Library never defines this,
  2578. because we don't know what the system has.
  2579. -- Macro: int _POSIX2_SW_DEV
  2580. If this symbol is defined, it indicates that the system has the
  2581. POSIX.2 commands ‘ar’, ‘make’, and ‘strip’. The GNU C Library
  2582. always defines this as ‘1’, on the assumption that you had to have
  2583. ‘ar’ and ‘make’ to install the library, and it's unlikely that
  2584. ‘strip’ would be absent when those are present.
  2585. 
  2586. File: libc.info, Node: Version Supported, Next: Sysconf, Prev: System Options, Up: System Configuration
  2587. 33.3 Which Version of POSIX is Supported
  2588. ========================================
  2589. -- Macro: long int _POSIX_VERSION
  2590. This constant represents the version of the POSIX.1 standard to
  2591. which the implementation conforms. For an implementation
  2592. conforming to the 1995 POSIX.1 standard, the value is the integer
  2593. ‘199506L’.
  2594. ‘_POSIX_VERSION’ is always defined (in ‘unistd.h’) in any POSIX
  2595. system.
  2596. *Usage Note:* Don't try to test whether the system supports POSIX
  2597. by including ‘unistd.h’ and then checking whether ‘_POSIX_VERSION’
  2598. is defined. On a non-POSIX system, this will probably fail because
  2599. there is no ‘unistd.h’. We do not know of _any_ way you can
  2600. reliably test at compilation time whether your target system
  2601. supports POSIX or whether ‘unistd.h’ exists.
  2602. -- Macro: long int _POSIX2_C_VERSION
  2603. This constant represents the version of the POSIX.2 standard which
  2604. the library and system kernel support. We don't know what value
  2605. this will be for the first version of the POSIX.2 standard, because
  2606. the value is based on the year and month in which the standard is
  2607. officially adopted.
  2608. The value of this symbol says nothing about the utilities installed
  2609. on the system.
  2610. *Usage Note:* You can use this macro to tell whether a POSIX.1
  2611. system library supports POSIX.2 as well. Any POSIX.1 system
  2612. contains ‘unistd.h’, so include that file and then test ‘defined
  2613. (_POSIX2_C_VERSION)’.
  2614. 
  2615. File: libc.info, Node: Sysconf, Next: Minimums, Prev: Version Supported, Up: System Configuration
  2616. 33.4 Using ‘sysconf’
  2617. ====================
  2618. When your system has configurable system limits, you can use the
  2619. ‘sysconf’ function to find out the value that applies to any particular
  2620. machine. The function and the associated PARAMETER constants are
  2621. declared in the header file ‘unistd.h’.
  2622. * Menu:
  2623. * Sysconf Definition:: Detailed specifications of ‘sysconf’.
  2624. * Constants for Sysconf:: The list of parameters ‘sysconf’ can read.
  2625. * Examples of Sysconf:: How to use ‘sysconf’ and the parameter
  2626. macros properly together.
  2627. 
  2628. File: libc.info, Node: Sysconf Definition, Next: Constants for Sysconf, Up: Sysconf
  2629. 33.4.1 Definition of ‘sysconf’
  2630. ------------------------------
  2631. -- Function: long int sysconf (int PARAMETER)
  2632. Preliminary: | MT-Safe env | AS-Unsafe lock heap | AC-Unsafe lock
  2633. mem fd | *Note POSIX Safety Concepts::.
  2634. This function is used to inquire about runtime system parameters.
  2635. The PARAMETER argument should be one of the ‘_SC_’ symbols listed
  2636. below.
  2637. The normal return value from ‘sysconf’ is the value you requested.
  2638. A value of ‘-1’ is returned both if the implementation does not
  2639. impose a limit, and in case of an error.
  2640. The following ‘errno’ error conditions are defined for this
  2641. function:
  2642. ‘EINVAL’
  2643. The value of the PARAMETER is invalid.
  2644. 
  2645. File: libc.info, Node: Constants for Sysconf, Next: Examples of Sysconf, Prev: Sysconf Definition, Up: Sysconf
  2646. 33.4.2 Constants for ‘sysconf’ Parameters
  2647. -----------------------------------------
  2648. Here are the symbolic constants for use as the PARAMETER argument to
  2649. ‘sysconf’. The values are all integer constants (more specifically,
  2650. enumeration type values).
  2651. ‘_SC_ARG_MAX’
  2652. Inquire about the parameter corresponding to ‘ARG_MAX’.
  2653. ‘_SC_CHILD_MAX’
  2654. Inquire about the parameter corresponding to ‘CHILD_MAX’.
  2655. ‘_SC_OPEN_MAX’
  2656. Inquire about the parameter corresponding to ‘OPEN_MAX’.
  2657. ‘_SC_STREAM_MAX’
  2658. Inquire about the parameter corresponding to ‘STREAM_MAX’.
  2659. ‘_SC_TZNAME_MAX’
  2660. Inquire about the parameter corresponding to ‘TZNAME_MAX’.
  2661. ‘_SC_NGROUPS_MAX’
  2662. Inquire about the parameter corresponding to ‘NGROUPS_MAX’.
  2663. ‘_SC_JOB_CONTROL’
  2664. Inquire about the parameter corresponding to ‘_POSIX_JOB_CONTROL’.
  2665. ‘_SC_SAVED_IDS’
  2666. Inquire about the parameter corresponding to ‘_POSIX_SAVED_IDS’.
  2667. ‘_SC_VERSION’
  2668. Inquire about the parameter corresponding to ‘_POSIX_VERSION’.
  2669. ‘_SC_CLK_TCK’
  2670. Inquire about the number of clock ticks per second; *note CPU
  2671. Time::. The corresponding parameter ‘CLK_TCK’ is obsolete.
  2672. ‘_SC_CHARCLASS_NAME_MAX’
  2673. Inquire about the parameter corresponding to maximal length allowed
  2674. for a character class name in an extended locale specification.
  2675. These extensions are not yet standardized and so this option is not
  2676. standardized as well.
  2677. ‘_SC_REALTIME_SIGNALS’
  2678. Inquire about the parameter corresponding to
  2679. ‘_POSIX_REALTIME_SIGNALS’.
  2680. ‘_SC_PRIORITY_SCHEDULING’
  2681. Inquire about the parameter corresponding to
  2682. ‘_POSIX_PRIORITY_SCHEDULING’.
  2683. ‘_SC_TIMERS’
  2684. Inquire about the parameter corresponding to ‘_POSIX_TIMERS’.
  2685. ‘_SC_ASYNCHRONOUS_IO’
  2686. Inquire about the parameter corresponding to
  2687. ‘_POSIX_ASYNCHRONOUS_IO’.
  2688. ‘_SC_PRIORITIZED_IO’
  2689. Inquire about the parameter corresponding to
  2690. ‘_POSIX_PRIORITIZED_IO’.
  2691. ‘_SC_SYNCHRONIZED_IO’
  2692. Inquire about the parameter corresponding to
  2693. ‘_POSIX_SYNCHRONIZED_IO’.
  2694. ‘_SC_FSYNC’
  2695. Inquire about the parameter corresponding to ‘_POSIX_FSYNC’.
  2696. ‘_SC_MAPPED_FILES’
  2697. Inquire about the parameter corresponding to ‘_POSIX_MAPPED_FILES’.
  2698. ‘_SC_MEMLOCK’
  2699. Inquire about the parameter corresponding to ‘_POSIX_MEMLOCK’.
  2700. ‘_SC_MEMLOCK_RANGE’
  2701. Inquire about the parameter corresponding to
  2702. ‘_POSIX_MEMLOCK_RANGE’.
  2703. ‘_SC_MEMORY_PROTECTION’
  2704. Inquire about the parameter corresponding to
  2705. ‘_POSIX_MEMORY_PROTECTION’.
  2706. ‘_SC_MESSAGE_PASSING’
  2707. Inquire about the parameter corresponding to
  2708. ‘_POSIX_MESSAGE_PASSING’.
  2709. ‘_SC_SEMAPHORES’
  2710. Inquire about the parameter corresponding to ‘_POSIX_SEMAPHORES’.
  2711. ‘_SC_SHARED_MEMORY_OBJECTS’
  2712. Inquire about the parameter corresponding to
  2713. ‘_POSIX_SHARED_MEMORY_OBJECTS’.
  2714. ‘_SC_AIO_LISTIO_MAX’
  2715. Inquire about the parameter corresponding to
  2716. ‘_POSIX_AIO_LISTIO_MAX’.
  2717. ‘_SC_AIO_MAX’
  2718. Inquire about the parameter corresponding to ‘_POSIX_AIO_MAX’.
  2719. ‘_SC_AIO_PRIO_DELTA_MAX’
  2720. Inquire about the value by which a process can decrease its
  2721. asynchronous I/O priority level from its own scheduling priority.
  2722. This corresponds to the run-time invariant value
  2723. ‘AIO_PRIO_DELTA_MAX’.
  2724. ‘_SC_DELAYTIMER_MAX’
  2725. Inquire about the parameter corresponding to
  2726. ‘_POSIX_DELAYTIMER_MAX’.
  2727. ‘_SC_MQ_OPEN_MAX’
  2728. Inquire about the parameter corresponding to ‘_POSIX_MQ_OPEN_MAX’.
  2729. ‘_SC_MQ_PRIO_MAX’
  2730. Inquire about the parameter corresponding to ‘_POSIX_MQ_PRIO_MAX’.
  2731. ‘_SC_RTSIG_MAX’
  2732. Inquire about the parameter corresponding to ‘_POSIX_RTSIG_MAX’.
  2733. ‘_SC_SEM_NSEMS_MAX’
  2734. Inquire about the parameter corresponding to
  2735. ‘_POSIX_SEM_NSEMS_MAX’.
  2736. ‘_SC_SEM_VALUE_MAX’
  2737. Inquire about the parameter corresponding to
  2738. ‘_POSIX_SEM_VALUE_MAX’.
  2739. ‘_SC_SIGQUEUE_MAX’
  2740. Inquire about the parameter corresponding to ‘_POSIX_SIGQUEUE_MAX’.
  2741. ‘_SC_TIMER_MAX’
  2742. Inquire about the parameter corresponding to ‘_POSIX_TIMER_MAX’.
  2743. ‘_SC_PII’
  2744. Inquire about the parameter corresponding to ‘_POSIX_PII’.
  2745. ‘_SC_PII_XTI’
  2746. Inquire about the parameter corresponding to ‘_POSIX_PII_XTI’.
  2747. ‘_SC_PII_SOCKET’
  2748. Inquire about the parameter corresponding to ‘_POSIX_PII_SOCKET’.
  2749. ‘_SC_PII_INTERNET’
  2750. Inquire about the parameter corresponding to ‘_POSIX_PII_INTERNET’.
  2751. ‘_SC_PII_OSI’
  2752. Inquire about the parameter corresponding to ‘_POSIX_PII_OSI’.
  2753. ‘_SC_SELECT’
  2754. Inquire about the parameter corresponding to ‘_POSIX_SELECT’.
  2755. ‘_SC_UIO_MAXIOV’
  2756. Inquire about the parameter corresponding to ‘_POSIX_UIO_MAXIOV’.
  2757. ‘_SC_PII_INTERNET_STREAM’
  2758. Inquire about the parameter corresponding to
  2759. ‘_POSIX_PII_INTERNET_STREAM’.
  2760. ‘_SC_PII_INTERNET_DGRAM’
  2761. Inquire about the parameter corresponding to
  2762. ‘_POSIX_PII_INTERNET_DGRAM’.
  2763. ‘_SC_PII_OSI_COTS’
  2764. Inquire about the parameter corresponding to ‘_POSIX_PII_OSI_COTS’.
  2765. ‘_SC_PII_OSI_CLTS’
  2766. Inquire about the parameter corresponding to ‘_POSIX_PII_OSI_CLTS’.
  2767. ‘_SC_PII_OSI_M’
  2768. Inquire about the parameter corresponding to ‘_POSIX_PII_OSI_M’.
  2769. ‘_SC_T_IOV_MAX’
  2770. Inquire about the value associated with the ‘T_IOV_MAX’ variable.
  2771. ‘_SC_THREADS’
  2772. Inquire about the parameter corresponding to ‘_POSIX_THREADS’.
  2773. ‘_SC_THREAD_SAFE_FUNCTIONS’
  2774. Inquire about the parameter corresponding to
  2775. ‘_POSIX_THREAD_SAFE_FUNCTIONS’.
  2776. ‘_SC_GETGR_R_SIZE_MAX’
  2777. Inquire about the parameter corresponding to
  2778. ‘_POSIX_GETGR_R_SIZE_MAX’.
  2779. ‘_SC_GETPW_R_SIZE_MAX’
  2780. Inquire about the parameter corresponding to
  2781. ‘_POSIX_GETPW_R_SIZE_MAX’.
  2782. ‘_SC_LOGIN_NAME_MAX’
  2783. Inquire about the parameter corresponding to
  2784. ‘_POSIX_LOGIN_NAME_MAX’.
  2785. ‘_SC_TTY_NAME_MAX’
  2786. Inquire about the parameter corresponding to ‘_POSIX_TTY_NAME_MAX’.
  2787. ‘_SC_THREAD_DESTRUCTOR_ITERATIONS’
  2788. Inquire about the parameter corresponding to
  2789. ‘_POSIX_THREAD_DESTRUCTOR_ITERATIONS’.
  2790. ‘_SC_THREAD_KEYS_MAX’
  2791. Inquire about the parameter corresponding to
  2792. ‘_POSIX_THREAD_KEYS_MAX’.
  2793. ‘_SC_THREAD_STACK_MIN’
  2794. Inquire about the parameter corresponding to
  2795. ‘_POSIX_THREAD_STACK_MIN’.
  2796. ‘_SC_THREAD_THREADS_MAX’
  2797. Inquire about the parameter corresponding to
  2798. ‘_POSIX_THREAD_THREADS_MAX’.
  2799. ‘_SC_THREAD_ATTR_STACKADDR’
  2800. Inquire about the parameter corresponding to
  2801. a ‘_POSIX_THREAD_ATTR_STACKADDR’.
  2802. ‘_SC_THREAD_ATTR_STACKSIZE’
  2803. Inquire about the parameter corresponding to
  2804. ‘_POSIX_THREAD_ATTR_STACKSIZE’.
  2805. ‘_SC_THREAD_PRIORITY_SCHEDULING’
  2806. Inquire about the parameter corresponding to
  2807. ‘_POSIX_THREAD_PRIORITY_SCHEDULING’.
  2808. ‘_SC_THREAD_PRIO_INHERIT’
  2809. Inquire about the parameter corresponding to
  2810. ‘_POSIX_THREAD_PRIO_INHERIT’.
  2811. ‘_SC_THREAD_PRIO_PROTECT’
  2812. Inquire about the parameter corresponding to
  2813. ‘_POSIX_THREAD_PRIO_PROTECT’.
  2814. ‘_SC_THREAD_PROCESS_SHARED’
  2815. Inquire about the parameter corresponding to
  2816. ‘_POSIX_THREAD_PROCESS_SHARED’.
  2817. ‘_SC_2_C_DEV’
  2818. Inquire about whether the system has the POSIX.2 C compiler
  2819. command, ‘c89’.
  2820. ‘_SC_2_FORT_DEV’
  2821. Inquire about whether the system has the POSIX.2 Fortran compiler
  2822. command, ‘fort77’.
  2823. ‘_SC_2_FORT_RUN’
  2824. Inquire about whether the system has the POSIX.2 ‘asa’ command to
  2825. interpret Fortran carriage control.
  2826. ‘_SC_2_LOCALEDEF’
  2827. Inquire about whether the system has the POSIX.2 ‘localedef’
  2828. command.
  2829. ‘_SC_2_SW_DEV’
  2830. Inquire about whether the system has the POSIX.2 commands ‘ar’,
  2831. ‘make’, and ‘strip’.
  2832. ‘_SC_BC_BASE_MAX’
  2833. Inquire about the maximum value of ‘obase’ in the ‘bc’ utility.
  2834. ‘_SC_BC_DIM_MAX’
  2835. Inquire about the maximum size of an array in the ‘bc’ utility.
  2836. ‘_SC_BC_SCALE_MAX’
  2837. Inquire about the maximum value of ‘scale’ in the ‘bc’ utility.
  2838. ‘_SC_BC_STRING_MAX’
  2839. Inquire about the maximum size of a string constant in the ‘bc’
  2840. utility.
  2841. ‘_SC_COLL_WEIGHTS_MAX’
  2842. Inquire about the maximum number of weights that can necessarily be
  2843. used in defining the collating sequence for a locale.
  2844. ‘_SC_EXPR_NEST_MAX’
  2845. Inquire about the maximum number of expressions nested within
  2846. parentheses when using the ‘expr’ utility.
  2847. ‘_SC_LINE_MAX’
  2848. Inquire about the maximum size of a text line that the POSIX.2 text
  2849. utilities can handle.
  2850. ‘_SC_EQUIV_CLASS_MAX’
  2851. Inquire about the maximum number of weights that can be assigned to
  2852. an entry of the ‘LC_COLLATE’ category ‘order’ keyword in a locale
  2853. definition. The GNU C Library does not presently support locale
  2854. definitions.
  2855. ‘_SC_VERSION’
  2856. Inquire about the version number of POSIX.1 that the library and
  2857. kernel support.
  2858. ‘_SC_2_VERSION’
  2859. Inquire about the version number of POSIX.2 that the system
  2860. utilities support.
  2861. ‘_SC_PAGESIZE’
  2862. Inquire about the virtual memory page size of the machine.
  2863. ‘getpagesize’ returns the same value (*note Query Memory
  2864. Parameters::).
  2865. ‘_SC_NPROCESSORS_CONF’
  2866. Inquire about the number of configured processors.
  2867. ‘_SC_NPROCESSORS_ONLN’
  2868. Inquire about the number of processors online.
  2869. ‘_SC_PHYS_PAGES’
  2870. Inquire about the number of physical pages in the system.
  2871. ‘_SC_AVPHYS_PAGES’
  2872. Inquire about the number of available physical pages in the system.
  2873. ‘_SC_ATEXIT_MAX’
  2874. Inquire about the number of functions which can be registered as
  2875. termination functions for ‘atexit’; *note Cleanups on Exit::.
  2876. ‘_SC_LEVEL1_ICACHE_SIZE’
  2877. Inquire about the size of the Level 1 instruction cache.
  2878. ‘_SC_LEVEL1_ICACHE_ASSOC’
  2879. Inquire about the associativity of the Level 1 instruction cache.
  2880. ‘_SC_LEVEL1_ICACHE_LINESIZE’
  2881. Inquire about the line length of the Level 1 instruction cache.
  2882. On aarch64, the cache line size returned is the minimum instruction
  2883. cache line size observable by userspace. This is typically the
  2884. same as the L1 icache size but on some cores it may not be so.
  2885. However, it is specified in the architecture that operations such
  2886. as cache line invalidation are consistent with the size reported
  2887. with this variable.
  2888. ‘_SC_LEVEL1_DCACHE_SIZE’
  2889. Inquire about the size of the Level 1 data cache.
  2890. ‘_SC_LEVEL1_DCACHE_ASSOC’
  2891. Inquire about the associativity of the Level 1 data cache.
  2892. ‘_SC_LEVEL1_DCACHE_LINESIZE’
  2893. Inquire about the line length of the Level 1 data cache.
  2894. On aarch64, the cache line size returned is the minimum data cache
  2895. line size observable by userspace. This is typically the same as
  2896. the L1 dcache size but on some cores it may not be so. However, it
  2897. is specified in the architecture that operations such as cache line
  2898. invalidation are consistent with the size reported with this
  2899. variable.
  2900. ‘_SC_LEVEL2_CACHE_SIZE’
  2901. Inquire about the size of the Level 2 cache.
  2902. ‘_SC_LEVEL2_CACHE_ASSOC’
  2903. Inquire about the associativity of the Level 2 cache.
  2904. ‘_SC_LEVEL2_CACHE_LINESIZE’
  2905. Inquire about the line length of the Level 2 cache.
  2906. ‘_SC_LEVEL3_CACHE_SIZE’
  2907. Inquire about the size of the Level 3 cache.
  2908. ‘_SC_LEVEL3_CACHE_ASSOC’
  2909. Inquire about the associativity of the Level 3 cache.
  2910. ‘_SC_LEVEL3_CACHE_LINESIZE’
  2911. Inquire about the line length of the Level 3 cache.
  2912. ‘_SC_LEVEL4_CACHE_SIZE’
  2913. Inquire about the size of the Level 4 cache.
  2914. ‘_SC_LEVEL4_CACHE_ASSOC’
  2915. Inquire about the associativity of the Level 4 cache.
  2916. ‘_SC_LEVEL4_CACHE_LINESIZE’
  2917. Inquire about the line length of the Level 4 cache.
  2918. ‘_SC_XOPEN_VERSION’
  2919. Inquire about the parameter corresponding to ‘_XOPEN_VERSION’.
  2920. ‘_SC_XOPEN_XCU_VERSION’
  2921. Inquire about the parameter corresponding to ‘_XOPEN_XCU_VERSION’.
  2922. ‘_SC_XOPEN_UNIX’
  2923. Inquire about the parameter corresponding to ‘_XOPEN_UNIX’.
  2924. ‘_SC_XOPEN_REALTIME’
  2925. Inquire about the parameter corresponding to ‘_XOPEN_REALTIME’.
  2926. ‘_SC_XOPEN_REALTIME_THREADS’
  2927. Inquire about the parameter corresponding to
  2928. ‘_XOPEN_REALTIME_THREADS’.
  2929. ‘_SC_XOPEN_LEGACY’
  2930. Inquire about the parameter corresponding to ‘_XOPEN_LEGACY’.
  2931. ‘_SC_XOPEN_CRYPT’
  2932. Inquire about the parameter corresponding to ‘_XOPEN_CRYPT’. The
  2933. GNU C Library no longer implements the ‘_XOPEN_CRYPT’ extensions,
  2934. so ‘sysconf (_SC_XOPEN_CRYPT)’ always returns ‘-1’.
  2935. ‘_SC_XOPEN_ENH_I18N’
  2936. Inquire about the parameter corresponding to ‘_XOPEN_ENH_I18N’.
  2937. ‘_SC_XOPEN_SHM’
  2938. Inquire about the parameter corresponding to ‘_XOPEN_SHM’.
  2939. ‘_SC_XOPEN_XPG2’
  2940. Inquire about the parameter corresponding to ‘_XOPEN_XPG2’.
  2941. ‘_SC_XOPEN_XPG3’
  2942. Inquire about the parameter corresponding to ‘_XOPEN_XPG3’.
  2943. ‘_SC_XOPEN_XPG4’
  2944. Inquire about the parameter corresponding to ‘_XOPEN_XPG4’.
  2945. ‘_SC_CHAR_BIT’
  2946. Inquire about the number of bits in a variable of type ‘char’.
  2947. ‘_SC_CHAR_MAX’
  2948. Inquire about the maximum value which can be stored in a variable
  2949. of type ‘char’.
  2950. ‘_SC_CHAR_MIN’
  2951. Inquire about the minimum value which can be stored in a variable
  2952. of type ‘char’.
  2953. ‘_SC_INT_MAX’
  2954. Inquire about the maximum value which can be stored in a variable
  2955. of type ‘int’.
  2956. ‘_SC_INT_MIN’
  2957. Inquire about the minimum value which can be stored in a variable
  2958. of type ‘int’.
  2959. ‘_SC_LONG_BIT’
  2960. Inquire about the number of bits in a variable of type ‘long int’.
  2961. ‘_SC_WORD_BIT’
  2962. Inquire about the number of bits in a variable of a register word.
  2963. ‘_SC_MB_LEN_MAX’
  2964. Inquire about the maximum length of a multi-byte representation of
  2965. a wide character value.
  2966. ‘_SC_NZERO’
  2967. Inquire about the value used to internally represent the zero
  2968. priority level for the process execution.
  2969. ‘_SC_SSIZE_MAX’
  2970. Inquire about the maximum value which can be stored in a variable
  2971. of type ‘ssize_t’.
  2972. ‘_SC_SCHAR_MAX’
  2973. Inquire about the maximum value which can be stored in a variable
  2974. of type ‘signed char’.
  2975. ‘_SC_SCHAR_MIN’
  2976. Inquire about the minimum value which can be stored in a variable
  2977. of type ‘signed char’.
  2978. ‘_SC_SHRT_MAX’
  2979. Inquire about the maximum value which can be stored in a variable
  2980. of type ‘short int’.
  2981. ‘_SC_SHRT_MIN’
  2982. Inquire about the minimum value which can be stored in a variable
  2983. of type ‘short int’.
  2984. ‘_SC_UCHAR_MAX’
  2985. Inquire about the maximum value which can be stored in a variable
  2986. of type ‘unsigned char’.
  2987. ‘_SC_UINT_MAX’
  2988. Inquire about the maximum value which can be stored in a variable
  2989. of type ‘unsigned int’.
  2990. ‘_SC_ULONG_MAX’
  2991. Inquire about the maximum value which can be stored in a variable
  2992. of type ‘unsigned long int’.
  2993. ‘_SC_USHRT_MAX’
  2994. Inquire about the maximum value which can be stored in a variable
  2995. of type ‘unsigned short int’.
  2996. ‘_SC_NL_ARGMAX’
  2997. Inquire about the parameter corresponding to ‘NL_ARGMAX’.
  2998. ‘_SC_NL_LANGMAX’
  2999. Inquire about the parameter corresponding to ‘NL_LANGMAX’.
  3000. ‘_SC_NL_MSGMAX’
  3001. Inquire about the parameter corresponding to ‘NL_MSGMAX’.
  3002. ‘_SC_NL_NMAX’
  3003. Inquire about the parameter corresponding to ‘NL_NMAX’.
  3004. ‘_SC_NL_SETMAX’
  3005. Inquire about the parameter corresponding to ‘NL_SETMAX’.
  3006. ‘_SC_NL_TEXTMAX’
  3007. Inquire about the parameter corresponding to ‘NL_TEXTMAX’.
  3008. ‘_SC_MINSIGSTKSZ’
  3009. Inquire about the minimum number of bytes of free stack space
  3010. required in order to guarantee successful, non-nested handling of a
  3011. single signal whose handler is an empty function.
  3012. ‘_SC_SIGSTKSZ’
  3013. Inquire about the suggested minimum number of bytes of stack space
  3014. required for a signal stack.
  3015. This is not guaranteed to be enough for any specific purpose other
  3016. than the invocation of a single, non-nested, empty handler, but
  3017. nonetheless should be enough for basic scenarios involving simple
  3018. signal handlers and very low levels of signal nesting (say, 2 or 3
  3019. levels at the very most).
  3020. This value is provided for developer convenience and to ease
  3021. migration from the legacy ‘SIGSTKSZ’ constant. Programs requiring
  3022. stronger guarantees should avoid using it if at all possible.
  3023. 
  3024. File: libc.info, Node: Examples of Sysconf, Prev: Constants for Sysconf, Up: Sysconf
  3025. 33.4.3 Examples of ‘sysconf’
  3026. ----------------------------
  3027. We recommend that you first test for a macro definition for the
  3028. parameter you are interested in, and call ‘sysconf’ only if the macro is
  3029. not defined. For example, here is how to test whether job control is
  3030. supported:
  3031. int
  3032. have_job_control (void)
  3033. {
  3034. #ifdef _POSIX_JOB_CONTROL
  3035. return 1;
  3036. #else
  3037. int value = sysconf (_SC_JOB_CONTROL);
  3038. if (value < 0)
  3039. /* If the system is that badly wedged,
  3040. there's no use trying to go on. */
  3041. fatal (strerror (errno));
  3042. return value;
  3043. #endif
  3044. }
  3045. Here is how to get the value of a numeric limit:
  3046. int
  3047. get_child_max ()
  3048. {
  3049. #ifdef CHILD_MAX
  3050. return CHILD_MAX;
  3051. #else
  3052. int value = sysconf (_SC_CHILD_MAX);
  3053. if (value < 0)
  3054. fatal (strerror (errno));
  3055. return value;
  3056. #endif
  3057. }
  3058. 
  3059. File: libc.info, Node: Minimums, Next: Limits for Files, Prev: Sysconf, Up: System Configuration
  3060. 33.5 Minimum Values for General Capacity Limits
  3061. ===============================================
  3062. Here are the names for the POSIX minimum upper bounds for the system
  3063. limit parameters. The significance of these values is that you can
  3064. safely push to these limits without checking whether the particular
  3065. system you are using can go that far.
  3066. ‘_POSIX_AIO_LISTIO_MAX’
  3067. The most restrictive limit permitted by POSIX for the maximum
  3068. number of I/O operations that can be specified in a list I/O call.
  3069. The value of this constant is ‘2’; thus you can add up to two new
  3070. entries of the list of outstanding operations.
  3071. ‘_POSIX_AIO_MAX’
  3072. The most restrictive limit permitted by POSIX for the maximum
  3073. number of outstanding asynchronous I/O operations. The value of
  3074. this constant is ‘1’. So you cannot expect that you can issue more
  3075. than one operation and immediately continue with the normal work,
  3076. receiving the notifications asynchronously.
  3077. ‘_POSIX_ARG_MAX’
  3078. The value of this macro is the most restrictive limit permitted by
  3079. POSIX for the maximum combined length of the ARGV and ENVIRON
  3080. arguments that can be passed to the ‘exec’ functions. Its value is
  3081. ‘4096’.
  3082. ‘_POSIX_CHILD_MAX’
  3083. The value of this macro is the most restrictive limit permitted by
  3084. POSIX for the maximum number of simultaneous processes per real
  3085. user ID. Its value is ‘6’.
  3086. ‘_POSIX_NGROUPS_MAX’
  3087. The value of this macro is the most restrictive limit permitted by
  3088. POSIX for the maximum number of supplementary group IDs per
  3089. process. Its value is ‘0’.
  3090. ‘_POSIX_OPEN_MAX’
  3091. The value of this macro is the most restrictive limit permitted by
  3092. POSIX for the maximum number of files that a single process can
  3093. have open simultaneously. Its value is ‘16’.
  3094. ‘_POSIX_SSIZE_MAX’
  3095. The value of this macro is the most restrictive limit permitted by
  3096. POSIX for the maximum value that can be stored in an object of type
  3097. ‘ssize_t’. Its value is ‘32767’.
  3098. ‘_POSIX_STREAM_MAX’
  3099. The value of this macro is the most restrictive limit permitted by
  3100. POSIX for the maximum number of streams that a single process can
  3101. have open simultaneously. Its value is ‘8’.
  3102. ‘_POSIX_TZNAME_MAX’
  3103. The value of this macro is the most restrictive limit permitted by
  3104. POSIX for the maximum length of a time zone abbreviation. Its
  3105. value is ‘3’.
  3106. ‘_POSIX2_RE_DUP_MAX’
  3107. The value of this macro is the most restrictive limit permitted by
  3108. POSIX for the numbers used in the ‘\{MIN,MAX\}’ construct in a
  3109. regular expression. Its value is ‘255’.
  3110. 
  3111. File: libc.info, Node: Limits for Files, Next: Options for Files, Prev: Minimums, Up: System Configuration
  3112. 33.6 Limits on File System Capacity
  3113. ===================================
  3114. The POSIX.1 standard specifies a number of parameters that describe the
  3115. limitations of the file system. It's possible for the system to have a
  3116. fixed, uniform limit for a parameter, but this isn't the usual case. On
  3117. most systems, it's possible for different file systems (and, for some
  3118. parameters, even different files) to have different maximum limits. For
  3119. example, this is very likely if you use NFS to mount some of the file
  3120. systems from other machines.
  3121. Each of the following macros is defined in ‘limits.h’ only if the
  3122. system has a fixed, uniform limit for the parameter in question. If the
  3123. system allows different file systems or files to have different limits,
  3124. then the macro is undefined; use ‘pathconf’ or ‘fpathconf’ to find out
  3125. the limit that applies to a particular file. *Note Pathconf::.
  3126. Each parameter also has another macro, with a name starting with
  3127. ‘_POSIX’, which gives the lowest value that the limit is allowed to have
  3128. on _any_ POSIX system. *Note File Minimums::.
  3129. -- Macro: int LINK_MAX
  3130. The uniform system limit (if any) for the number of names for a
  3131. given file. *Note Hard Links::.
  3132. -- Macro: int MAX_CANON
  3133. The uniform system limit (if any) for the amount of text in a line
  3134. of input when input editing is enabled. *Note Canonical or Not::.
  3135. -- Macro: int MAX_INPUT
  3136. The uniform system limit (if any) for the total number of
  3137. characters typed ahead as input. *Note I/O Queues::.
  3138. -- Macro: int NAME_MAX
  3139. The uniform system limit (if any) for the length of a file name
  3140. component, not including the terminating null character.
  3141. *Portability Note:* On some systems, the GNU C Library defines
  3142. ‘NAME_MAX’, but does not actually enforce this limit.
  3143. -- Macro: int PATH_MAX
  3144. The uniform system limit (if any) for the length of an entire file
  3145. name (that is, the argument given to system calls such as ‘open’),
  3146. including the terminating null character.
  3147. *Portability Note:* The GNU C Library does not enforce this limit
  3148. even if ‘PATH_MAX’ is defined.
  3149. -- Macro: int PIPE_BUF
  3150. The uniform system limit (if any) for the number of bytes that can
  3151. be written atomically to a pipe. If multiple processes are writing
  3152. to the same pipe simultaneously, output from different processes
  3153. might be interleaved in chunks of this size. *Note Pipes and
  3154. FIFOs::.
  3155. These are alternative macro names for some of the same information.
  3156. -- Macro: int MAXNAMLEN
  3157. This is the BSD name for ‘NAME_MAX’. It is defined in ‘dirent.h’.
  3158. -- Macro: int FILENAME_MAX
  3159. The value of this macro is an integer constant expression that
  3160. represents the maximum length of a file name string. It is defined
  3161. in ‘stdio.h’.
  3162. Unlike ‘PATH_MAX’, this macro is defined even if there is no actual
  3163. limit imposed. In such a case, its value is typically a very large
  3164. number. *This is always the case on GNU/Hurd systems.*
  3165. *Usage Note:* Don't use ‘FILENAME_MAX’ as the size of an array in
  3166. which to store a file name! You can't possibly make an array that
  3167. big! Use dynamic allocation (*note Memory Allocation::) instead.
  3168. 
  3169. File: libc.info, Node: Options for Files, Next: File Minimums, Prev: Limits for Files, Up: System Configuration
  3170. 33.7 Optional Features in File Support
  3171. ======================================
  3172. POSIX defines certain system-specific options in the system calls for
  3173. operating on files. Some systems support these options and others do
  3174. not. Since these options are provided in the kernel, not in the
  3175. library, simply using the GNU C Library does not guarantee that any of
  3176. these features is supported; it depends on the system you are using.
  3177. They can also vary between file systems on a single machine.
  3178. This section describes the macros you can test to determine whether a
  3179. particular option is supported on your machine. If a given macro is
  3180. defined in ‘unistd.h’, then its value says whether the corresponding
  3181. feature is supported. (A value of ‘-1’ indicates no; any other value
  3182. indicates yes.) If the macro is undefined, it means particular files
  3183. may or may not support the feature.
  3184. Since all the machines that support the GNU C Library also support
  3185. NFS, one can never make a general statement about whether all file
  3186. systems support the ‘_POSIX_CHOWN_RESTRICTED’ and ‘_POSIX_NO_TRUNC’
  3187. features. So these names are never defined as macros in the GNU C
  3188. Library.
  3189. -- Macro: int _POSIX_CHOWN_RESTRICTED
  3190. If this option is in effect, the ‘chown’ function is restricted so
  3191. that the only changes permitted to nonprivileged processes is to
  3192. change the group owner of a file to either be the effective group
  3193. ID of the process, or one of its supplementary group IDs. *Note
  3194. File Owner::.
  3195. -- Macro: int _POSIX_NO_TRUNC
  3196. If this option is in effect, file name components longer than
  3197. ‘NAME_MAX’ generate an ‘ENAMETOOLONG’ error. Otherwise, file name
  3198. components that are too long are silently truncated.
  3199. -- Macro: unsigned char _POSIX_VDISABLE
  3200. This option is only meaningful for files that are terminal devices.
  3201. If it is enabled, then handling for special control characters can
  3202. be disabled individually. *Note Special Characters::.
  3203. If one of these macros is undefined, that means that the option might
  3204. be in effect for some files and not for others. To inquire about a
  3205. particular file, call ‘pathconf’ or ‘fpathconf’. *Note Pathconf::.
  3206. 
  3207. File: libc.info, Node: File Minimums, Next: Pathconf, Prev: Options for Files, Up: System Configuration
  3208. 33.8 Minimum Values for File System Limits
  3209. ==========================================
  3210. Here are the names for the POSIX minimum upper bounds for some of the
  3211. above parameters. The significance of these values is that you can
  3212. safely push to these limits without checking whether the particular
  3213. system you are using can go that far. In most cases GNU systems do not
  3214. have these strict limitations. The actual limit should be requested if
  3215. necessary.
  3216. ‘_POSIX_LINK_MAX’
  3217. The most restrictive limit permitted by POSIX for the maximum value
  3218. of a file's link count. The value of this constant is ‘8’; thus,
  3219. you can always make up to eight names for a file without running
  3220. into a system limit.
  3221. ‘_POSIX_MAX_CANON’
  3222. The most restrictive limit permitted by POSIX for the maximum
  3223. number of bytes in a canonical input line from a terminal device.
  3224. The value of this constant is ‘255’.
  3225. ‘_POSIX_MAX_INPUT’
  3226. The most restrictive limit permitted by POSIX for the maximum
  3227. number of bytes in a terminal device input queue (or typeahead
  3228. buffer). *Note Input Modes::. The value of this constant is
  3229. ‘255’.
  3230. ‘_POSIX_NAME_MAX’
  3231. The most restrictive limit permitted by POSIX for the maximum
  3232. number of bytes in a file name component. The value of this
  3233. constant is ‘14’.
  3234. ‘_POSIX_PATH_MAX’
  3235. The most restrictive limit permitted by POSIX for the maximum
  3236. number of bytes in a file name. The value of this constant is
  3237. ‘256’.
  3238. ‘_POSIX_PIPE_BUF’
  3239. The most restrictive limit permitted by POSIX for the maximum
  3240. number of bytes that can be written atomically to a pipe. The
  3241. value of this constant is ‘512’.
  3242. ‘SYMLINK_MAX’
  3243. Maximum number of bytes in a symbolic link.
  3244. ‘POSIX_REC_INCR_XFER_SIZE’
  3245. Recommended increment for file transfer sizes between the
  3246. ‘POSIX_REC_MIN_XFER_SIZE’ and ‘POSIX_REC_MAX_XFER_SIZE’ values.
  3247. ‘POSIX_REC_MAX_XFER_SIZE’
  3248. Maximum recommended file transfer size.
  3249. ‘POSIX_REC_MIN_XFER_SIZE’
  3250. Minimum recommended file transfer size.
  3251. ‘POSIX_REC_XFER_ALIGN’
  3252. Recommended file transfer buffer alignment.
  3253. 
  3254. File: libc.info, Node: Pathconf, Next: Utility Limits, Prev: File Minimums, Up: System Configuration
  3255. 33.9 Using ‘pathconf’
  3256. =====================
  3257. When your machine allows different files to have different values for a
  3258. file system parameter, you can use the functions in this section to find
  3259. out the value that applies to any particular file.
  3260. These functions and the associated constants for the PARAMETER
  3261. argument are declared in the header file ‘unistd.h’.
  3262. -- Function: long int pathconf (const char *FILENAME, int PARAMETER)
  3263. Preliminary: | MT-Safe | AS-Unsafe lock heap | AC-Unsafe lock fd
  3264. mem | *Note POSIX Safety Concepts::.
  3265. This function is used to inquire about the limits that apply to the
  3266. file named FILENAME.
  3267. The PARAMETER argument should be one of the ‘_PC_’ constants listed
  3268. below.
  3269. The normal return value from ‘pathconf’ is the value you requested.
  3270. A value of ‘-1’ is returned both if the implementation does not
  3271. impose a limit, and in case of an error. In the former case,
  3272. ‘errno’ is not set, while in the latter case, ‘errno’ is set to
  3273. indicate the cause of the problem. So the only way to use this
  3274. function robustly is to store ‘0’ into ‘errno’ just before calling
  3275. it.
  3276. Besides the usual file name errors (*note File Name Errors::), the
  3277. following error condition is defined for this function:
  3278. ‘EINVAL’
  3279. The value of PARAMETER is invalid, or the implementation
  3280. doesn't support the PARAMETER for the specific file.
  3281. -- Function: long int fpathconf (int FILEDES, int PARAMETER)
  3282. Preliminary: | MT-Safe | AS-Unsafe lock heap | AC-Unsafe lock fd
  3283. mem | *Note POSIX Safety Concepts::.
  3284. This is just like ‘pathconf’ except that an open file descriptor is
  3285. used to specify the file for which information is requested,
  3286. instead of a file name.
  3287. The following ‘errno’ error conditions are defined for this
  3288. function:
  3289. ‘EBADF’
  3290. The FILEDES argument is not a valid file descriptor.
  3291. ‘EINVAL’
  3292. The value of PARAMETER is invalid, or the implementation
  3293. doesn't support the PARAMETER for the specific file.
  3294. Here are the symbolic constants that you can use as the PARAMETER
  3295. argument to ‘pathconf’ and ‘fpathconf’. The values are all integer
  3296. constants.
  3297. ‘_PC_LINK_MAX’
  3298. Inquire about the value of ‘LINK_MAX’.
  3299. ‘_PC_MAX_CANON’
  3300. Inquire about the value of ‘MAX_CANON’.
  3301. ‘_PC_MAX_INPUT’
  3302. Inquire about the value of ‘MAX_INPUT’.
  3303. ‘_PC_NAME_MAX’
  3304. Inquire about the value of ‘NAME_MAX’.
  3305. ‘_PC_PATH_MAX’
  3306. Inquire about the value of ‘PATH_MAX’.
  3307. ‘_PC_PIPE_BUF’
  3308. Inquire about the value of ‘PIPE_BUF’.
  3309. ‘_PC_CHOWN_RESTRICTED’
  3310. Inquire about the value of ‘_POSIX_CHOWN_RESTRICTED’.
  3311. ‘_PC_NO_TRUNC’
  3312. Inquire about the value of ‘_POSIX_NO_TRUNC’.
  3313. ‘_PC_VDISABLE’
  3314. Inquire about the value of ‘_POSIX_VDISABLE’.
  3315. ‘_PC_SYNC_IO’
  3316. Inquire about the value of ‘_POSIX_SYNC_IO’.
  3317. ‘_PC_ASYNC_IO’
  3318. Inquire about the value of ‘_POSIX_ASYNC_IO’.
  3319. ‘_PC_PRIO_IO’
  3320. Inquire about the value of ‘_POSIX_PRIO_IO’.
  3321. ‘_PC_FILESIZEBITS’
  3322. Inquire about the availability of large files on the filesystem.
  3323. ‘_PC_REC_INCR_XFER_SIZE’
  3324. Inquire about the value of ‘POSIX_REC_INCR_XFER_SIZE’.
  3325. ‘_PC_REC_MAX_XFER_SIZE’
  3326. Inquire about the value of ‘POSIX_REC_MAX_XFER_SIZE’.
  3327. ‘_PC_REC_MIN_XFER_SIZE’
  3328. Inquire about the value of ‘POSIX_REC_MIN_XFER_SIZE’.
  3329. ‘_PC_REC_XFER_ALIGN’
  3330. Inquire about the value of ‘POSIX_REC_XFER_ALIGN’.
  3331. *Portability Note:* On some systems, the GNU C Library does not
  3332. enforce ‘_PC_NAME_MAX’ or ‘_PC_PATH_MAX’ limits.
  3333. 
  3334. File: libc.info, Node: Utility Limits, Next: Utility Minimums, Prev: Pathconf, Up: System Configuration
  3335. 33.10 Utility Program Capacity Limits
  3336. =====================================
  3337. The POSIX.2 standard specifies certain system limits that you can access
  3338. through ‘sysconf’ that apply to utility behavior rather than the
  3339. behavior of the library or the operating system.
  3340. The GNU C Library defines macros for these limits, and ‘sysconf’
  3341. returns values for them if you ask; but these values convey no
  3342. meaningful information. They are simply the smallest values that
  3343. POSIX.2 permits.
  3344. -- Macro: int BC_BASE_MAX
  3345. The largest value of ‘obase’ that the ‘bc’ utility is guaranteed to
  3346. support.
  3347. -- Macro: int BC_DIM_MAX
  3348. The largest number of elements in one array that the ‘bc’ utility
  3349. is guaranteed to support.
  3350. -- Macro: int BC_SCALE_MAX
  3351. The largest value of ‘scale’ that the ‘bc’ utility is guaranteed to
  3352. support.
  3353. -- Macro: int BC_STRING_MAX
  3354. The largest number of characters in one string constant that the
  3355. ‘bc’ utility is guaranteed to support.
  3356. -- Macro: int COLL_WEIGHTS_MAX
  3357. The largest number of weights that can necessarily be used in
  3358. defining the collating sequence for a locale.
  3359. -- Macro: int EXPR_NEST_MAX
  3360. The maximum number of expressions that can be nested within
  3361. parentheses by the ‘expr’ utility.
  3362. -- Macro: int LINE_MAX
  3363. The largest text line that the text-oriented POSIX.2 utilities can
  3364. support. (If you are using the GNU versions of these utilities,
  3365. then there is no actual limit except that imposed by the available
  3366. virtual memory, but there is no way that the library can tell you
  3367. this.)
  3368. -- Macro: int EQUIV_CLASS_MAX
  3369. The maximum number of weights that can be assigned to an entry of
  3370. the ‘LC_COLLATE’ category ‘order’ keyword in a locale definition.
  3371. The GNU C Library does not presently support locale definitions.
  3372. 
  3373. File: libc.info, Node: Utility Minimums, Next: String Parameters, Prev: Utility Limits, Up: System Configuration
  3374. 33.11 Minimum Values for Utility Limits
  3375. =======================================
  3376. ‘_POSIX2_BC_BASE_MAX’
  3377. The most restrictive limit permitted by POSIX.2 for the maximum
  3378. value of ‘obase’ in the ‘bc’ utility. Its value is ‘99’.
  3379. ‘_POSIX2_BC_DIM_MAX’
  3380. The most restrictive limit permitted by POSIX.2 for the maximum
  3381. size of an array in the ‘bc’ utility. Its value is ‘2048’.
  3382. ‘_POSIX2_BC_SCALE_MAX’
  3383. The most restrictive limit permitted by POSIX.2 for the maximum
  3384. value of ‘scale’ in the ‘bc’ utility. Its value is ‘99’.
  3385. ‘_POSIX2_BC_STRING_MAX’
  3386. The most restrictive limit permitted by POSIX.2 for the maximum
  3387. size of a string constant in the ‘bc’ utility. Its value is
  3388. ‘1000’.
  3389. ‘_POSIX2_COLL_WEIGHTS_MAX’
  3390. The most restrictive limit permitted by POSIX.2 for the maximum
  3391. number of weights that can necessarily be used in defining the
  3392. collating sequence for a locale. Its value is ‘2’.
  3393. ‘_POSIX2_EXPR_NEST_MAX’
  3394. The most restrictive limit permitted by POSIX.2 for the maximum
  3395. number of expressions nested within parenthesis when using the
  3396. ‘expr’ utility. Its value is ‘32’.
  3397. ‘_POSIX2_LINE_MAX’
  3398. The most restrictive limit permitted by POSIX.2 for the maximum
  3399. size of a text line that the text utilities can handle. Its value
  3400. is ‘2048’.
  3401. ‘_POSIX2_EQUIV_CLASS_MAX’
  3402. The most restrictive limit permitted by POSIX.2 for the maximum
  3403. number of weights that can be assigned to an entry of the
  3404. ‘LC_COLLATE’ category ‘order’ keyword in a locale definition. Its
  3405. value is ‘2’. The GNU C Library does not presently support locale
  3406. definitions.
  3407. 
  3408. File: libc.info, Node: String Parameters, Prev: Utility Minimums, Up: System Configuration
  3409. 33.12 String-Valued Parameters
  3410. ==============================
  3411. POSIX.2 defines a way to get string-valued parameters from the operating
  3412. system with the function ‘confstr’:
  3413. -- Function: size_t confstr (int PARAMETER, char *BUF, size_t LEN)
  3414. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3415. Concepts::.
  3416. This function reads the value of a string-valued system parameter,
  3417. storing the string into LEN bytes of memory space starting at BUF.
  3418. The PARAMETER argument should be one of the ‘_CS_’ symbols listed
  3419. below.
  3420. The normal return value from ‘confstr’ is the length of the string
  3421. value that you asked for. If you supply a null pointer for BUF,
  3422. then ‘confstr’ does not try to store the string; it just returns
  3423. its length. A value of ‘0’ indicates an error.
  3424. If the string you asked for is too long for the buffer (that is,
  3425. longer than ‘LEN - 1’), then ‘confstr’ stores just that much
  3426. (leaving room for the terminating null character). You can tell
  3427. that this has happened because ‘confstr’ returns a value greater
  3428. than or equal to LEN.
  3429. The following ‘errno’ error conditions are defined for this
  3430. function:
  3431. ‘EINVAL’
  3432. The value of the PARAMETER is invalid.
  3433. Currently there is just one parameter you can read with ‘confstr’:
  3434. ‘_CS_PATH’
  3435. This parameter's value is the recommended default path for
  3436. searching for executable files. This is the path that a user has
  3437. by default just after logging in.
  3438. ‘_CS_LFS_CFLAGS’
  3439. The returned string specifies which additional flags must be given
  3440. to the C compiler if a source is compiled using the
  3441. ‘_LARGEFILE_SOURCE’ feature select macro; *note Feature Test
  3442. Macros::.
  3443. ‘_CS_LFS_LDFLAGS’
  3444. The returned string specifies which additional flags must be given
  3445. to the linker if a source is compiled using the ‘_LARGEFILE_SOURCE’
  3446. feature select macro; *note Feature Test Macros::.
  3447. ‘_CS_LFS_LIBS’
  3448. The returned string specifies which additional libraries must be
  3449. linked to the application if a source is compiled using the
  3450. ‘_LARGEFILE_SOURCE’ feature select macro; *note Feature Test
  3451. Macros::.
  3452. ‘_CS_LFS_LINTFLAGS’
  3453. The returned string specifies which additional flags must be given
  3454. to the lint tool if a source is compiled using the
  3455. ‘_LARGEFILE_SOURCE’ feature select macro; *note Feature Test
  3456. Macros::.
  3457. ‘_CS_LFS64_CFLAGS’
  3458. The returned string specifies which additional flags must be given
  3459. to the C compiler if a source is compiled using the
  3460. ‘_LARGEFILE64_SOURCE’ feature select macro; *note Feature Test
  3461. Macros::.
  3462. ‘_CS_LFS64_LDFLAGS’
  3463. The returned string specifies which additional flags must be given
  3464. to the linker if a source is compiled using the
  3465. ‘_LARGEFILE64_SOURCE’ feature select macro; *note Feature Test
  3466. Macros::.
  3467. ‘_CS_LFS64_LIBS’
  3468. The returned string specifies which additional libraries must be
  3469. linked to the application if a source is compiled using the
  3470. ‘_LARGEFILE64_SOURCE’ feature select macro; *note Feature Test
  3471. Macros::.
  3472. ‘_CS_LFS64_LINTFLAGS’
  3473. The returned string specifies which additional flags must be given
  3474. to the lint tool if a source is compiled using the
  3475. ‘_LARGEFILE64_SOURCE’ feature select macro; *note Feature Test
  3476. Macros::.
  3477. The way to use ‘confstr’ without any arbitrary limit on string size
  3478. is to call it twice: first call it to get the length, allocate the
  3479. buffer accordingly, and then call ‘confstr’ again to fill the buffer,
  3480. like this:
  3481. char *
  3482. get_default_path (void)
  3483. {
  3484. size_t len = confstr (_CS_PATH, NULL, 0);
  3485. char *buffer = (char *) xmalloc (len);
  3486. if (confstr (_CS_PATH, buf, len + 1) == 0)
  3487. {
  3488. free (buffer);
  3489. return NULL;
  3490. }
  3491. return buffer;
  3492. }
  3493. 
  3494. File: libc.info, Node: Cryptographic Functions, Next: Debugging Support, Prev: System Configuration, Up: Top
  3495. 34 Cryptographic Functions
  3496. **************************
  3497. The GNU C Library includes only one type of special-purpose
  3498. cryptographic functions; these allow use of a source of
  3499. cryptographically strong pseudorandom numbers, if such a source is
  3500. provided by the operating system. Programs that need general-purpose
  3501. cryptography should use a dedicated cryptography library, such as
  3502. libgcrypt.
  3503. * Menu:
  3504. * Unpredictable Bytes:: Randomness for cryptographic purposes.
  3505. 
  3506. File: libc.info, Node: Unpredictable Bytes, Up: Cryptographic Functions
  3507. 34.1 Generating Unpredictable Bytes
  3508. ===================================
  3509. Cryptographic applications often need random data that will be as
  3510. difficult as possible for a hostile eavesdropper to guess. The
  3511. pseudo-random number generators provided by the GNU C Library (*note
  3512. Pseudo-Random Numbers::) are not suitable for this purpose. They
  3513. produce output that is _statistically_ random, but fails to be
  3514. _unpredictable_. Cryptographic applications require a “cryptographic
  3515. random number generator” (CRNG), also known as a “cryptographically
  3516. strong pseudo-random number generator” (CSPRNG) or a “deterministic
  3517. random bit generator” (DRBG).
  3518. Currently, the GNU C Library does not provide a cryptographic random
  3519. number generator, but it does provide functions that read
  3520. cryptographically strong random data from a “randomness source” supplied
  3521. by the operating system. This randomness source is a CRNG at heart, but
  3522. it also continually "re-seeds" itself from physical sources of
  3523. randomness, such as electronic noise and clock jitter. This means
  3524. applications do not need to do anything to ensure that the random
  3525. numbers it produces are different on each run.
  3526. The catch, however, is that these functions will only produce
  3527. relatively short random strings in any one call. Often this is not a
  3528. problem, but applications that need more than a few kilobytes of
  3529. cryptographically strong random data should call these functions once
  3530. and use their output to seed a CRNG.
  3531. Most applications should use ‘getentropy’. The ‘getrandom’ function
  3532. is intended for low-level applications which need additional control
  3533. over blocking behavior.
  3534. -- Function: int getentropy (void *BUFFER, size_t LENGTH)
  3535. | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety Concepts::.
  3536. This function writes exactly LENGTH bytes of random data to the
  3537. array starting at BUFFER. LENGTH can be no more than 256. On
  3538. success, it returns zero. On failure, it returns -1, and ‘errno’
  3539. is set to indicate the problem. Some of the possible errors are
  3540. listed below.
  3541. ‘ENOSYS’
  3542. The operating system does not implement a randomness source,
  3543. or does not support this way of accessing it. (For instance,
  3544. the system call used by this function was added to the Linux
  3545. kernel in version 3.17.)
  3546. ‘EFAULT’
  3547. The combination of BUFFER and LENGTH arguments specifies an
  3548. invalid memory range.
  3549. ‘EIO’
  3550. LENGTH is larger than 256, or the kernel entropy pool has
  3551. suffered a catastrophic failure.
  3552. A call to ‘getentropy’ can only block when the system has just
  3553. booted and the randomness source has not yet been initialized.
  3554. However, if it does block, it cannot be interrupted by signals or
  3555. thread cancellation. Programs intended to run in very early stages
  3556. of the boot process may need to use ‘getrandom’ in non-blocking
  3557. mode instead, and be prepared to cope with random data not being
  3558. available at all.
  3559. The ‘getentropy’ function is declared in the header file
  3560. ‘sys/random.h’. It is derived from OpenBSD.
  3561. -- Function: ssize_t getrandom (void *BUFFER, size_t LENGTH, unsigned
  3562. int FLAGS)
  3563. | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety Concepts::.
  3564. This function writes up to LENGTH bytes of random data to the array
  3565. starting at BUFFER. The FLAGS argument should be either zero, or
  3566. the bitwise OR of some of the following flags:
  3567. ‘GRND_RANDOM’
  3568. Use the ‘/dev/random’ (blocking) source instead of the
  3569. ‘/dev/urandom’ (non-blocking) source to obtain randomness.
  3570. If this flag is specified, the call may block, potentially for
  3571. quite some time, even after the randomness source has been
  3572. initialized. If it is not specified, the call can only block
  3573. when the system has just booted and the randomness source has
  3574. not yet been initialized.
  3575. ‘GRND_NONBLOCK’
  3576. Instead of blocking, return to the caller immediately if no
  3577. data is available.
  3578. ‘GRND_INSECURE’
  3579. Write random data that may not be cryptographically secure.
  3580. Unlike ‘getentropy’, the ‘getrandom’ function is a cancellation
  3581. point, and if it blocks, it can be interrupted by signals.
  3582. On success, ‘getrandom’ returns the number of bytes which have been
  3583. written to the buffer, which may be less than LENGTH. On error, it
  3584. returns -1, and ‘errno’ is set to indicate the problem. Some of
  3585. the possible errors are:
  3586. ‘ENOSYS’
  3587. The operating system does not implement a randomness source,
  3588. or does not support this way of accessing it. (For instance,
  3589. the system call used by this function was added to the Linux
  3590. kernel in version 3.17.)
  3591. ‘EAGAIN’
  3592. No random data was available and ‘GRND_NONBLOCK’ was specified
  3593. in FLAGS.
  3594. ‘EFAULT’
  3595. The combination of BUFFER and LENGTH arguments specifies an
  3596. invalid memory range.
  3597. ‘EINTR’
  3598. The system call was interrupted. During the system boot
  3599. process, before the kernel randomness pool is initialized,
  3600. this can happen even if FLAGS is zero.
  3601. ‘EINVAL’
  3602. The FLAGS argument contains an invalid combination of flags.
  3603. The ‘getrandom’ function is declared in the header file
  3604. ‘sys/random.h’. It is a GNU extension.
  3605. 
  3606. File: libc.info, Node: Debugging Support, Next: Threads, Prev: Cryptographic Functions, Up: Top
  3607. 35 Debugging support
  3608. ********************
  3609. Applications are usually debugged using dedicated debugger programs.
  3610. But sometimes this is not possible and, in any case, it is useful to
  3611. provide the developer with as much information as possible at the time
  3612. the problems are experienced. For this reason a few functions are
  3613. provided which a program can use to help the developer more easily
  3614. locate the problem.
  3615. * Menu:
  3616. * Backtraces:: Obtaining and printing a back trace of the
  3617. current stack.
  3618. 
  3619. File: libc.info, Node: Backtraces, Up: Debugging Support
  3620. 35.1 Backtraces
  3621. ===============
  3622. A “backtrace” is a list of the function calls that are currently active
  3623. in a thread. The usual way to inspect a backtrace of a program is to
  3624. use an external debugger such as gdb. However, sometimes it is useful
  3625. to obtain a backtrace programmatically from within a program, e.g., for
  3626. the purposes of logging or diagnostics.
  3627. The header file ‘execinfo.h’ declares three functions that obtain and
  3628. manipulate backtraces of the current thread.
  3629. -- Function: int backtrace (void **BUFFER, int SIZE)
  3630. Preliminary: | MT-Safe | AS-Unsafe init heap dlopen plugin lock |
  3631. AC-Unsafe init mem lock fd | *Note POSIX Safety Concepts::.
  3632. The ‘backtrace’ function obtains a backtrace for the current
  3633. thread, as a list of pointers, and places the information into
  3634. BUFFER. The argument SIZE should be the number of ‘void *’
  3635. elements that will fit into BUFFER. The return value is the actual
  3636. number of entries of BUFFER that are obtained, and is at most SIZE.
  3637. The pointers placed in BUFFER are actually return addresses
  3638. obtained by inspecting the stack, one return address per stack
  3639. frame.
  3640. Note that certain compiler optimizations may interfere with
  3641. obtaining a valid backtrace. Function inlining causes the inlined
  3642. function to not have a stack frame; tail call optimization replaces
  3643. one stack frame with another; frame pointer elimination will stop
  3644. ‘backtrace’ from interpreting the stack contents correctly.
  3645. -- Function: char ** backtrace_symbols (void *const *BUFFER, int SIZE)
  3646. Preliminary: | MT-Safe | AS-Unsafe heap | AC-Unsafe mem lock |
  3647. *Note POSIX Safety Concepts::.
  3648. The ‘backtrace_symbols’ function translates the information
  3649. obtained from the ‘backtrace’ function into an array of strings.
  3650. The argument BUFFER should be a pointer to an array of addresses
  3651. obtained via the ‘backtrace’ function, and SIZE is the number of
  3652. entries in that array (the return value of ‘backtrace’).
  3653. The return value is a pointer to an array of strings, which has
  3654. SIZE entries just like the array BUFFER. Each string contains a
  3655. printable representation of the corresponding element of BUFFER.
  3656. It includes the function name (if this can be determined), an
  3657. offset into the function, and the actual return address (in
  3658. hexadecimal).
  3659. Currently, the function name and offset can only be obtained on
  3660. systems that use the ELF binary format for programs and libraries.
  3661. On other systems, only the hexadecimal return address will be
  3662. present. Also, you may need to pass additional flags to the linker
  3663. to make the function names available to the program. (For example,
  3664. on systems using GNU ld, you must pass ‘-rdynamic’.)
  3665. The return value of ‘backtrace_symbols’ is a pointer obtained via
  3666. the ‘malloc’ function, and it is the responsibility of the caller
  3667. to ‘free’ that pointer. Note that only the return value need be
  3668. freed, not the individual strings.
  3669. The return value is ‘NULL’ if sufficient memory for the strings
  3670. cannot be obtained.
  3671. -- Function: void backtrace_symbols_fd (void *const *BUFFER, int SIZE,
  3672. int FD)
  3673. Preliminary: | MT-Safe | AS-Safe | AC-Unsafe lock | *Note POSIX
  3674. Safety Concepts::.
  3675. The ‘backtrace_symbols_fd’ function performs the same translation
  3676. as the function ‘backtrace_symbols’ function. Instead of returning
  3677. the strings to the caller, it writes the strings to the file
  3678. descriptor FD, one per line. It does not use the ‘malloc’
  3679. function, and can therefore be used in situations where that
  3680. function might fail.
  3681. The following program illustrates the use of these functions. Note
  3682. that the array to contain the return addresses returned by ‘backtrace’
  3683. is allocated on the stack. Therefore code like this can be used in
  3684. situations where the memory handling via ‘malloc’ does not work anymore
  3685. (in which case the ‘backtrace_symbols’ has to be replaced by a
  3686. ‘backtrace_symbols_fd’ call as well). The number of return addresses is
  3687. normally not very large. Even complicated programs rather seldom have a
  3688. nesting level of more than, say, 50 and with 200 possible entries
  3689. probably all programs should be covered.
  3690. #include <execinfo.h>
  3691. #include <stdio.h>
  3692. #include <stdlib.h>
  3693. /* Obtain a backtrace and print it to ‘stdout’. */
  3694. void
  3695. print_trace (void)
  3696. {
  3697. void *array[10];
  3698. char **strings;
  3699. int size, i;
  3700. size = backtrace (array, 10);
  3701. strings = backtrace_symbols (array, size);
  3702. if (strings != NULL)
  3703. {
  3704. printf ("Obtained %d stack frames.\n", size);
  3705. for (i = 0; i < size; i++)
  3706. printf ("%s\n", strings[i]);
  3707. }
  3708. free (strings);
  3709. }
  3710. /* A dummy function to make the backtrace more interesting. */
  3711. void
  3712. dummy_function (void)
  3713. {
  3714. print_trace ();
  3715. }
  3716. int
  3717. main (void)
  3718. {
  3719. dummy_function ();
  3720. return 0;
  3721. }
  3722. 
  3723. File: libc.info, Node: Threads, Next: Dynamic Linker, Prev: Debugging Support, Up: Top
  3724. 36 Threads
  3725. **********
  3726. This chapter describes functions used for managing threads. The GNU C
  3727. Library provides two threading implementations: ISO C threads and POSIX
  3728. threads.
  3729. * Menu:
  3730. * ISO C Threads:: Threads based on the ISO C specification.
  3731. * POSIX Threads:: Threads based on the POSIX specification.
  3732. 
  3733. File: libc.info, Node: ISO C Threads, Next: POSIX Threads, Up: Threads
  3734. 36.1 ISO C Threads
  3735. ==================
  3736. This section describes the GNU C Library ISO C threads implementation.
  3737. To have a deeper understanding of this API, it is strongly recommended
  3738. to read ISO/IEC 9899:2011, section 7.26, in which ISO C threads were
  3739. originally specified.
  3740. All types and function prototypes are declared in the header file
  3741. ‘threads.h’. When compiling for C, some functionality is also available
  3742. in ‘stdlib.h’.
  3743. It is recommended that GNU systems use the functionality in
  3744. ‘pthread.h’ instead of ‘thread.h’, as they are more portable between C
  3745. and C++.
  3746. * Menu:
  3747. * ISO C Threads Return Values:: Symbolic constants that represent a
  3748. function's return value.
  3749. * ISO C Thread Management:: Support for basic threading.
  3750. * Call Once:: Single-call functions and macros.
  3751. * ISO C Mutexes:: A low-level mechanism for mutual exclusion.
  3752. * ISO C Condition Variables:: High-level objects for thread synchronization.
  3753. * ISO C Thread-local Storage:: Functions to support thread-local storage.
  3754. 
  3755. File: libc.info, Node: ISO C Threads Return Values, Next: ISO C Thread Management, Up: ISO C Threads
  3756. 36.1.1 Return Values
  3757. --------------------
  3758. The ISO C thread specification provides the following enumeration
  3759. constants for return values from functions in the API:
  3760. ‘thrd_timedout’
  3761. A specified time was reached without acquiring the requested
  3762. resource, usually a mutex or condition variable.
  3763. ‘thrd_success’
  3764. The requested operation succeeded.
  3765. ‘thrd_busy’
  3766. The requested operation failed because a requested resource is
  3767. already in use.
  3768. ‘thrd_error’
  3769. The requested operation failed.
  3770. ‘thrd_nomem’
  3771. The requested operation failed because it was unable to allocate
  3772. enough memory.
  3773. 
  3774. File: libc.info, Node: ISO C Thread Management, Next: Call Once, Prev: ISO C Threads Return Values, Up: ISO C Threads
  3775. 36.1.2 Creation and Control
  3776. ---------------------------
  3777. The GNU C Library implements a set of functions that allow the user to
  3778. easily create and use threads. Additional functionality is provided to
  3779. control the behavior of threads.
  3780. The following data types are defined for managing threads:
  3781. -- Data Type: thrd_t
  3782. A unique object that identifies a thread.
  3783. -- Data Type: thrd_start_t
  3784. This data type is an ‘int (*) (void *)’ typedef that is passed to
  3785. ‘thrd_create’ when creating a new thread. It should point to the
  3786. first function that thread will run.
  3787. The following functions are used for working with threads:
  3788. -- Function: int thrd_create (thrd_t *THR, thrd_start_t FUNC, void
  3789. *ARG)
  3790. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3791. Concepts::.
  3792. ‘thrd_create’ creates a new thread that will execute the function
  3793. FUNC. The object pointed to by ARG will be used as the argument to
  3794. FUNC. If successful, THR is set to the new thread identifier.
  3795. This function may return ‘thrd_success’, ‘thrd_nomem’, or
  3796. ‘thrd_error’.
  3797. -- Function: thrd_t thrd_current (void)
  3798. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3799. Concepts::.
  3800. This function returns the identifier of the calling thread.
  3801. -- Function: int thrd_equal (thrd_t LHS, thrd_t RHS)
  3802. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3803. Concepts::.
  3804. ‘thrd_equal’ checks whether LHS and RHS refer to the same thread.
  3805. If LHS and RHS are different threads, this function returns 0;
  3806. otherwise, the return value is non-zero.
  3807. -- Function: int thrd_sleep (const struct timespec *TIME_POINT, struct
  3808. timespec *REMAINING)
  3809. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3810. Concepts::.
  3811. ‘thrd_sleep’ blocks the execution of the current thread for at
  3812. least until the elapsed time pointed to by TIME_POINT has been
  3813. reached. This function does not take an absolute time, but a
  3814. duration that the thread is required to be blocked. *Note Time
  3815. Basics::, and *note Time Types::.
  3816. The thread may wake early if a signal that is not ignored is
  3817. received. In such a case, if ‘remaining’ is not NULL, the
  3818. remaining time duration is stored in the object pointed to by
  3819. REMAINING.
  3820. ‘thrd_sleep’ returns 0 if it blocked for at least the amount of
  3821. time in ‘time_point’, -1 if it was interrupted by a signal, or a
  3822. negative number on failure.
  3823. -- Function: void thrd_yield (void)
  3824. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3825. Concepts::.
  3826. ‘thrd_yield’ provides a hint to the implementation to reschedule
  3827. the execution of the current thread, allowing other threads to run.
  3828. -- Function: _Noreturn void thrd_exit (int RES)
  3829. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3830. Concepts::.
  3831. ‘thrd_exit’ terminates execution of the calling thread and sets its
  3832. result code to RES.
  3833. If this function is called from a single-threaded process, the call
  3834. is equivalent to calling ‘exit’ with ‘EXIT_SUCCESS’ (*note Normal
  3835. Termination::). Also note that returning from a function that
  3836. started a thread is equivalent to calling ‘thrd_exit’.
  3837. -- Function: int thrd_detach (thrd_t THR)
  3838. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3839. Concepts::.
  3840. ‘thrd_detach’ detaches the thread identified by ‘thr’ from the
  3841. current control thread. The resources held by the detached thread
  3842. will be freed automatically once the thread exits. The parent
  3843. thread will never be notified by any THR signal.
  3844. Calling ‘thrd_detach’ on a thread that was previously detached or
  3845. joined by another thread results in undefined behavior.
  3846. This function returns either ‘thrd_success’ or ‘thrd_error’.
  3847. -- Function: int thrd_join (thrd_t THR, int *RES)
  3848. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3849. Concepts::.
  3850. ‘thrd_join’ blocks the current thread until the thread identified
  3851. by ‘thr’ finishes execution. If ‘res’ is not NULL, the result code
  3852. of the thread is put into the location pointed to by RES. The
  3853. termination of the thread “synchronizes-with” the completion of
  3854. this function, meaning both threads have arrived at a common point
  3855. in their execution.
  3856. Calling ‘thrd_join’ on a thread that was previously detached or
  3857. joined by another thread results in undefined behavior.
  3858. This function returns either ‘thrd_success’ or ‘thrd_error’.
  3859. 
  3860. File: libc.info, Node: Call Once, Next: ISO C Mutexes, Prev: ISO C Thread Management, Up: ISO C Threads
  3861. 36.1.3 Call Once
  3862. ----------------
  3863. In order to guarantee single access to a function, the GNU C Library
  3864. implements a “call once function” to ensure a function is only called
  3865. once in the presence of multiple, potentially calling threads.
  3866. -- Data Type: once_flag
  3867. A complete object type capable of holding a flag used by
  3868. ‘call_once’.
  3869. As of C23, ‘once_flag’ is also defined in ‘stdlib.h’, but only for
  3870. C, not for C++.
  3871. -- Macro: ONCE_FLAG_INIT
  3872. This value is used to initialize an object of type ‘once_flag’.
  3873. As of C23, ‘ONCE_FLAG_INIT’ is also defined in ‘stdlib.h’, but only
  3874. for C, not for C++.
  3875. -- Function: void call_once (once_flag *FLAG, void (*FUNC) (void))
  3876. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3877. Concepts::.
  3878. ‘call_once’ calls function FUNC exactly once, even if invoked from
  3879. several threads. The completion of the function FUNC
  3880. synchronizes-with all previous or subsequent calls to ‘call_once’
  3881. with the same ‘flag’ variable.
  3882. These definitions are from C11, where they appear in ‘threads.h’. In
  3883. C23, they appear in ‘stdlib.h’ as well as in ‘threads.h’.
  3884. 
  3885. File: libc.info, Node: ISO C Mutexes, Next: ISO C Condition Variables, Prev: Call Once, Up: ISO C Threads
  3886. 36.1.4 Mutexes
  3887. --------------
  3888. To have better control of resources and how threads access them, the GNU
  3889. C Library implements a “mutex” object, which can help avoid race
  3890. conditions and other concurrency issues. The term "mutex" refers to
  3891. mutual exclusion.
  3892. The fundamental data type for a mutex is the ‘mtx_t’:
  3893. -- Data Type: mtx_t
  3894. The ‘mtx_t’ data type uniquely identifies a mutex object.
  3895. The ISO C standard defines several types of mutexes. They are
  3896. represented by the following symbolic constants:
  3897. ‘mtx_plain’
  3898. A mutex that does not support timeout, or test and return.
  3899. ‘mtx_recursive’
  3900. A mutex that supports recursive locking, which means that the
  3901. owning thread can lock it more than once without causing deadlock.
  3902. ‘mtx_timed’
  3903. A mutex that supports timeout.
  3904. The following functions are used for working with mutexes:
  3905. -- Function: int mtx_init (mtx_t *MUTEX, int TYPE)
  3906. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3907. Concepts::.
  3908. ‘mtx_init’ creates a new mutex object with type TYPE. The object
  3909. pointed to by MUTEX is set to the identifier of the newly created
  3910. mutex.
  3911. Not all combinations of mutex types are valid for the ‘type’
  3912. argument. Valid uses of mutex types for the ‘type’ argument are:
  3913. ‘mtx_plain’
  3914. A non-recursive mutex that does not support timeout.
  3915. ‘mtx_timed’
  3916. A non-recursive mutex that does support timeout.
  3917. ‘mtx_plain | mtx_recursive’
  3918. A recursive mutex that does not support timeout.
  3919. ‘mtx_timed | mtx_recursive’
  3920. A recursive mutex that does support timeout.
  3921. This function returns either ‘thrd_success’ or ‘thrd_error’.
  3922. -- Function: int mtx_lock (mtx_t *MUTEX)
  3923. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  3924. POSIX Safety Concepts::.
  3925. ‘mtx_lock’ blocks the current thread until the mutex pointed to by
  3926. MUTEX is locked. The behavior is undefined if the current thread
  3927. has already locked the mutex and the mutex is not recursive.
  3928. Prior calls to ‘mtx_unlock’ on the same mutex synchronize-with this
  3929. operation (if this operation succeeds), and all lock/unlock
  3930. operations on any given mutex form a single total order (similar to
  3931. the modification order of an atomic).
  3932. This function returns either ‘thrd_success’ or ‘thrd_error’.
  3933. -- Function: int mtx_timedlock (mtx_t *restrict MUTEX, const struct
  3934. timespec *restrict TIME_POINT)
  3935. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  3936. POSIX Safety Concepts::.
  3937. ‘mtx_timedlock’ blocks the current thread until the mutex pointed
  3938. to by MUTEX is locked or until the calendar time pointed to by
  3939. TIME_POINT has been reached. Since this function takes an absolute
  3940. time, if a duration is required, the calendar time must be
  3941. calculated manually. *Note Time Basics::, and *note Calendar
  3942. Time::.
  3943. If the current thread has already locked the mutex and the mutex is
  3944. not recursive, or if the mutex does not support timeout, the
  3945. behavior of this function is undefined.
  3946. Prior calls to ‘mtx_unlock’ on the same mutex synchronize-with this
  3947. operation (if this operation succeeds), and all lock/unlock
  3948. operations on any given mutex form a single total order (similar to
  3949. the modification order of an atomic).
  3950. This function returns either ‘thrd_success’ or ‘thrd_error’.
  3951. -- Function: int mtx_trylock (mtx_t *MUTEX)
  3952. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  3953. POSIX Safety Concepts::.
  3954. ‘mtx_trylock’ tries to lock the mutex pointed to by MUTEX without
  3955. blocking. It returns immediately if the mutex is already locked.
  3956. Prior calls to ‘mtx_unlock’ on the same mutex synchronize-with this
  3957. operation (if this operation succeeds), and all lock/unlock
  3958. operations on any given mutex form a single total order (similar to
  3959. the modification order of an atomic).
  3960. This function returns ‘thrd_success’ if the lock was obtained,
  3961. ‘thrd_busy’ if the mutex is already locked, and ‘thrd_error’ on
  3962. failure.
  3963. -- Function: int mtx_unlock (mtx_t *MUTEX)
  3964. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3965. Concepts::.
  3966. ‘mtx_unlock’ unlocks the mutex pointed to by MUTEX. The behavior
  3967. is undefined if the mutex is not locked by the calling thread.
  3968. This function synchronizes-with subsequent ‘mtx_lock’,
  3969. ‘mtx_trylock’, and ‘mtx_timedlock’ calls on the same mutex. All
  3970. lock/unlock operations on any given mutex form a single total order
  3971. (similar to the modification order of an atomic).
  3972. This function returns either ‘thrd_success’ or ‘thrd_error’.
  3973. -- Function: void mtx_destroy (mtx_t *MUTEX)
  3974. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3975. Concepts::.
  3976. ‘mtx_destroy’ destroys the mutex pointed to by MUTEX. If there are
  3977. any threads waiting on the mutex, the behavior is undefined.
  3978. 
  3979. File: libc.info, Node: ISO C Condition Variables, Next: ISO C Thread-local Storage, Prev: ISO C Mutexes, Up: ISO C Threads
  3980. 36.1.5 Condition Variables
  3981. --------------------------
  3982. Mutexes are not the only synchronization mechanisms available. For some
  3983. more complex tasks, the GNU C Library also implements “condition
  3984. variables”, which allow the programmer to think at a higher level when
  3985. solving complex synchronization problems. They are used to synchronize
  3986. threads waiting on a certain condition to happen.
  3987. The fundamental data type for condition variables is the ‘cnd_t’:
  3988. -- Data Type: cnd_t
  3989. The ‘cnd_t’ uniquely identifies a condition variable object.
  3990. The following functions are used for working with condition
  3991. variables:
  3992. -- Function: int cnd_init (cnd_t *COND)
  3993. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  3994. Concepts::.
  3995. ‘cnd_init’ initializes a new condition variable, identified by
  3996. COND.
  3997. This function may return ‘thrd_success’, ‘thrd_nomem’, or
  3998. ‘thrd_error’.
  3999. -- Function: int cnd_signal (cnd_t *COND)
  4000. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4001. Concepts::.
  4002. ‘cnd_signal’ unblocks one thread that is currently waiting on the
  4003. condition variable pointed to by COND. If a thread is successfully
  4004. unblocked, this function returns ‘thrd_success’. If no threads are
  4005. blocked, this function does nothing and returns ‘thrd_success’.
  4006. Otherwise, this function returns ‘thrd_error’.
  4007. -- Function: int cnd_broadcast (cnd_t *COND)
  4008. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4009. Concepts::.
  4010. ‘cnd_broadcast’ unblocks all the threads that are currently waiting
  4011. on the condition variable pointed to by COND. This function
  4012. returns ‘thrd_success’ on success. If no threads are blocked, this
  4013. function does nothing and returns ‘thrd_success’. Otherwise, this
  4014. function returns ‘thrd_error’.
  4015. -- Function: int cnd_wait (cnd_t *COND, mtx_t *MUTEX)
  4016. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4017. POSIX Safety Concepts::.
  4018. ‘cnd_wait’ atomically unlocks the mutex pointed to by MUTEX and
  4019. blocks on the condition variable pointed to by COND until the
  4020. thread is signaled by ‘cnd_signal’ or ‘cnd_broadcast’. The mutex
  4021. is locked again before the function returns.
  4022. This function returns either ‘thrd_success’ or ‘thrd_error’.
  4023. -- Function: int cnd_timedwait (cnd_t *restrict COND, mtx_t *restrict
  4024. MUTEX, const struct timespec *restrict TIME_POINT)
  4025. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4026. POSIX Safety Concepts::.
  4027. ‘cnd_timedwait’ atomically unlocks the mutex pointed to by MUTEX
  4028. and blocks on the condition variable pointed to by COND until the
  4029. thread is signaled by ‘cnd_signal’ or ‘cnd_broadcast’, or until the
  4030. calendar time pointed to by TIME_POINT has been reached. The mutex
  4031. is locked again before the function returns.
  4032. As for ‘mtx_timedlock’, since this function takes an absolute time,
  4033. if a duration is required, the calendar time must be calculated
  4034. manually. *Note Time Basics::, and *note Calendar Time::.
  4035. This function may return ‘thrd_success’, ‘thrd_nomem’, or
  4036. ‘thrd_error’.
  4037. -- Function: void cnd_destroy (cnd_t *COND)
  4038. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4039. Concepts::.
  4040. ‘cnd_destroy’ destroys the condition variable pointed to by COND.
  4041. If there are threads waiting on COND, the behavior is undefined.
  4042. 
  4043. File: libc.info, Node: ISO C Thread-local Storage, Prev: ISO C Condition Variables, Up: ISO C Threads
  4044. 36.1.6 Thread-local Storage
  4045. ---------------------------
  4046. The GNU C Library implements functions to provide “thread-local
  4047. storage”, a mechanism by which variables can be defined to have unique
  4048. per-thread storage, lifetimes that match the thread lifetime, and
  4049. destructors that cleanup the unique per-thread storage.
  4050. Several data types and macros exist for working with thread-local
  4051. storage:
  4052. -- Data Type: tss_t
  4053. The ‘tss_t’ data type identifies a thread-specific storage object.
  4054. Even if shared, every thread will have its own instance of the
  4055. variable, with different values.
  4056. -- Data Type: tss_dtor_t
  4057. The ‘tss_dtor_t’ is a function pointer of type ‘void (*) (void *)’,
  4058. to be used as a thread-specific storage destructor. The function
  4059. will be called when the current thread calls ‘thrd_exit’ (but never
  4060. when calling ‘tss_delete’ or ‘exit’).
  4061. -- Macro: thread_local
  4062. ‘thread_local’ is used to mark a variable with thread storage
  4063. duration, which means it is created when the thread starts and
  4064. cleaned up when the thread ends.
  4065. _Note:_ For C++, C++11 or later is required to use the
  4066. ‘thread_local’ keyword.
  4067. -- Macro: TSS_DTOR_ITERATIONS
  4068. ‘TSS_DTOR_ITERATIONS’ is an integer constant expression
  4069. representing the maximum number of iterations over all thread-local
  4070. destructors at the time of thread termination. This value provides
  4071. a bounded limit to the destruction of thread-local storage; e.g.,
  4072. consider a destructor that creates more thread-local storage.
  4073. The following functions are used to manage thread-local storage:
  4074. -- Function: int tss_create (tss_t *TSS_KEY, tss_dtor_t DESTRUCTOR)
  4075. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4076. Concepts::.
  4077. ‘tss_create’ creates a new thread-specific storage key and stores
  4078. it in the object pointed to by TSS_KEY. Although the same key
  4079. value may be used by different threads, the values bound to the key
  4080. by ‘tss_set’ are maintained on a per-thread basis and persist for
  4081. the life of the calling thread.
  4082. If ‘destructor’ is not NULL, a destructor function will be set, and
  4083. called when the thread finishes its execution by calling
  4084. ‘thrd_exit’.
  4085. This function returns ‘thrd_success’ if ‘tss_key’ is successfully
  4086. set to a unique value for the thread; otherwise, ‘thrd_error’ is
  4087. returned and the value of ‘tss_key’ is undefined.
  4088. -- Function: int tss_set (tss_t TSS_KEY, void *VAL)
  4089. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4090. Concepts::.
  4091. ‘tss_set’ sets the value of the thread-specific storage identified
  4092. by TSS_KEY for the current thread to VAL. Different threads may
  4093. set different values to the same key.
  4094. This function returns either ‘thrd_success’ or ‘thrd_error’.
  4095. -- Function: void * tss_get (tss_t TSS_KEY)
  4096. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4097. Concepts::.
  4098. ‘tss_get’ returns the value identified by TSS_KEY held in
  4099. thread-specific storage for the current thread. Different threads
  4100. may get different values identified by the same key. On failure,
  4101. ‘tss_get’ returns zero.
  4102. -- Function: void tss_delete (tss_t TSS_KEY)
  4103. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4104. Concepts::.
  4105. ‘tss_delete’ destroys the thread-specific storage identified by
  4106. TSS_KEY.
  4107. 
  4108. File: libc.info, Node: POSIX Threads, Prev: ISO C Threads, Up: Threads
  4109. 36.2 POSIX Threads
  4110. ==================
  4111. This section describes the GNU C Library POSIX Threads implementation.
  4112. * Menu:
  4113. * Creating and Destroying Threads::
  4114. * Thread-specific Data:: Support for creating and
  4115. managing thread-specific data
  4116. * Waiting with Explicit Clocks:: Functions for waiting with an
  4117. explicit clock specification.
  4118. * POSIX Semaphores:: Support for process and thread
  4119. synchronization using semaphores
  4120. * POSIX Barriers:: Support for process and thread
  4121. synchronization using barriers
  4122. * POSIX Spin Locks:: Support for process and thread
  4123. synchronization using spinlocks
  4124. * POSIX Mutexes:: Support for mutual exclusion
  4125. * POSIX Threads Other APIs:: Other Standard functions
  4126. * Non-POSIX Extensions:: Additional functions to extend
  4127. POSIX Thread functionality
  4128. 
  4129. File: libc.info, Node: Creating and Destroying Threads, Next: Thread-specific Data, Up: POSIX Threads
  4130. 36.2.1 Creating and Destroying Threads
  4131. --------------------------------------
  4132. -- Function: int pthread_create (pthread_t *NEWTHREAD, const
  4133. pthread_attr_t *ATTR, void *(*START_ROUTINE) (void *), void
  4134. *ARG)
  4135. This function creates a new thread with attributes ATTR. This
  4136. thread will call START_ROUTINE and pass it ARG. If START_ROUTINE
  4137. returns, the thread will exit and the return value will become the
  4138. thread's exit value. The new thread's ID is stored in NEWTHREAD.
  4139. Returns 0 on success. This documentation is a stub. For
  4140. additional information on this function, consult the manual page
  4141. pthread_create(3) (Latest, online:
  4142. <https://man7.org/linux/man-pages/man3/pthread_create.3.html>)
  4143. *Note Linux Kernel::.
  4144. -- Function: int pthread_detach (pthread_t TH)
  4145. Indicates that thread TH must clean up after itself automatically
  4146. when it exits, as the parent thread will not call ‘pthread_join’ on
  4147. it. This documentation is a stub. For additional information on
  4148. this function, consult the manual page pthread_detach(3) (Latest,
  4149. online:
  4150. <https://man7.org/linux/man-pages/man3/pthread_detach.3.html>)
  4151. *Note Linux Kernel::.
  4152. -- Function: int pthread_join (pthread_t TH, void **THREAD_RETURN)
  4153. Waits for thread TH to exit, and stores its return value in
  4154. THREAD_RETURN. This documentation is a stub. For additional
  4155. information on this function, consult the manual page
  4156. pthread_join(3) (Latest, online:
  4157. <https://man7.org/linux/man-pages/man3/pthread_join.3.html>) *Note
  4158. Linux Kernel::.
  4159. -- Function: int pthread_kill (pthread_t TH, int SIGNAL)
  4160. Sends signal SIGNAL to thread TH. This documentation is a stub.
  4161. For additional information on this function, consult the manual
  4162. page pthread_kill(3) (Latest, online:
  4163. <https://man7.org/linux/man-pages/man3/pthread_kill.3.html>) *Note
  4164. Linux Kernel::.
  4165. -- Function: pthread_t pthread_self (void)
  4166. Returns the ID of the thread which performed the call. This
  4167. documentation is a stub. For additional information on this
  4168. function, consult the manual page pthread_self(3) (Latest, online:
  4169. <https://man7.org/linux/man-pages/man3/pthread_self.3.html>) *Note
  4170. Linux Kernel::.
  4171. Each thread has a set of attributes which are passed to
  4172. ‘pthread_create’ via the ‘pthread_attr_t’ type, which should be
  4173. considered an opaque type.
  4174. -- Function: int pthread_attr_init (pthread_attr_t *ATTR)
  4175. Initializes ATTR to its default values and allocates any resources
  4176. required. Once initialized, ATTR can be modified by other
  4177. ‘pthread_attr_*’ functions, or used by ‘pthread_create’. This
  4178. documentation is a stub. For additional information on this
  4179. function, consult the manual page pthread_attr_init(3) (Latest,
  4180. online:
  4181. <https://man7.org/linux/man-pages/man3/pthread_attr_init.3.html>)
  4182. *Note Linux Kernel::.
  4183. -- Function: int pthread_attr_destroy (pthread_attr_t *ATTR)
  4184. When no longer needed, ATTR should be destroyed with this function,
  4185. which releases any resources allocated. Note that ATTR is only
  4186. needed for the ‘pthread_create’ call, not for the running thread
  4187. itself. This documentation is a stub. For additional information
  4188. on this function, consult the manual page pthread_attr_destroy(3)
  4189. (Latest, online:
  4190. <https://man7.org/linux/man-pages/man3/pthread_attr_destroy.3.html>)
  4191. *Note Linux Kernel::.
  4192. -- Function: int pthread_attr_setdetachstate (pthread_attr_t *ATTR, int
  4193. DETACHSTATE)
  4194. Sets the detach state attribute for ATTR. This attribute may be
  4195. one of the following:
  4196. ‘PTHREAD_CREATE_DETACHED’
  4197. Causes the created thread to be detached, that is, as if
  4198. ‘pthread_detach’ had been called on it.
  4199. ‘PTHREAD_CREATE_JOINABLE’
  4200. Causes the created thread to be joinable, that is,
  4201. ‘pthread_join’ must be called on it.
  4202. This documentation is a stub. For additional information on this
  4203. function, consult the manual page pthread_attr_setdetachstate(3)
  4204. (Latest, online:
  4205. <https://man7.org/linux/man-pages/man3/pthread_attr_setdetachstate.3.html>)
  4206. *Note Linux Kernel::.
  4207. -- Function: int pthread_attr_getdetachstate (const pthread_attr_t
  4208. *ATTR, int *DETACHSTATE)
  4209. Gets the detach state attribute from ATTR. This documentation is a
  4210. stub. For additional information on this function, consult the
  4211. manual page pthread_attr_getdetachstate(3) (Latest, online:
  4212. <https://man7.org/linux/man-pages/man3/pthread_attr_getdetachstate.3.html>)
  4213. *Note Linux Kernel::.
  4214. 
  4215. File: libc.info, Node: Thread-specific Data, Next: Waiting with Explicit Clocks, Prev: Creating and Destroying Threads, Up: POSIX Threads
  4216. 36.2.2 Thread-specific Data
  4217. ---------------------------
  4218. The GNU C Library implements functions to allow users to create and
  4219. manage data specific to a thread. Such data may be destroyed at thread
  4220. exit, if a destructor is provided. The following functions are defined:
  4221. -- Function: int pthread_key_create (pthread_key_t *KEY, void
  4222. (*DESTRUCTOR)(void*))
  4223. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4224. Concepts::.
  4225. Create a thread-specific data key for the calling thread,
  4226. referenced by KEY.
  4227. Objects declared with the C++11 ‘thread_local’ keyword are
  4228. destroyed before thread-specific data, so they should not be used
  4229. in thread-specific data destructors or even as members of the
  4230. thread-specific data, since the latter is passed as an argument to
  4231. the destructor function.
  4232. -- Function: int pthread_key_delete (pthread_key_t KEY)
  4233. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4234. Concepts::.
  4235. Destroy the thread-specific data KEY in the calling thread. The
  4236. destructor for the thread-specific data is not called during
  4237. destruction, nor is it called during thread exit.
  4238. -- Function: void * pthread_getspecific (pthread_key_t KEY)
  4239. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4240. Concepts::.
  4241. Return the thread-specific data associated with KEY in the calling
  4242. thread.
  4243. -- Function: int pthread_setspecific (pthread_key_t KEY, const void
  4244. *VALUE)
  4245. Preliminary: | MT-Safe | AS-Unsafe corrupt heap | AC-Unsafe corrupt
  4246. mem | *Note POSIX Safety Concepts::.
  4247. Associate the thread-specific VALUE with KEY in the calling thread.
  4248. 
  4249. File: libc.info, Node: Waiting with Explicit Clocks, Next: POSIX Semaphores, Prev: Thread-specific Data, Up: POSIX Threads
  4250. 36.2.3 Functions for Waiting According to a Specific Clock
  4251. ----------------------------------------------------------
  4252. The GNU C Library provides several waiting functions that expect an
  4253. explicit ‘clockid_t’ argument. These functions were all adopted by
  4254. POSIX.1-2024.
  4255. -- Function: int pthread_cond_clockwait (pthread_cond_t *COND,
  4256. pthread_mutex_t *MUTEX, clockid_t CLOCKID, const struct
  4257. timespec *ABSTIME)
  4258. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4259. POSIX Safety Concepts::.
  4260. Behaves like ‘pthread_cond_timedwait’ except the time ABSTIME is
  4261. measured against the clock specified by CLOCKID rather than the
  4262. clock specified or defaulted when ‘pthread_cond_init’ was called.
  4263. Currently, CLOCKID must be either ‘CLOCK_MONOTONIC’ or
  4264. ‘CLOCK_REALTIME’.
  4265. -- Function: int pthread_rwlock_clockrdlock (pthread_rwlock_t *RWLOCK,
  4266. clockid_t CLOCKID, const struct timespec *ABSTIME)
  4267. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4268. POSIX Safety Concepts::.
  4269. Behaves like ‘pthread_rwlock_timedrdlock’ except the time ABSTIME
  4270. is measured against the clock specified by CLOCKID rather than
  4271. ‘CLOCK_REALTIME’. Currently, CLOCKID must be either
  4272. ‘CLOCK_MONOTONIC’ or ‘CLOCK_REALTIME’, otherwise ‘EINVAL’ is
  4273. returned.
  4274. -- Function: int pthread_rwlock_clockwrlock (pthread_rwlock_t *RWLOCK,
  4275. clockid_t CLOCKID, const struct timespec *ABSTIME)
  4276. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4277. POSIX Safety Concepts::.
  4278. Behaves like ‘pthread_rwlock_timedwrlock’ except the time ABSTIME
  4279. is measured against the clock specified by CLOCKID rather than
  4280. ‘CLOCK_REALTIME’. Currently, CLOCKID must be either
  4281. ‘CLOCK_MONOTONIC’ or ‘CLOCK_REALTIME’, otherwise ‘EINVAL’ is
  4282. returned.
  4283. 
  4284. File: libc.info, Node: POSIX Semaphores, Next: POSIX Barriers, Prev: Waiting with Explicit Clocks, Up: POSIX Threads
  4285. 36.2.4 POSIX Semaphores
  4286. -----------------------
  4287. -- Function: int sem_init (sem_t *SEM, int PSHARED, unsigned int VALUE)
  4288. Preliminary: | MT-Safe | AS-Safe | AC-Unsafe corrupt | *Note POSIX
  4289. Safety Concepts::.
  4290. This documentation is a stub. For additional information on this
  4291. function, consult the manual page sem_init(3) (Latest, online:
  4292. <https://man7.org/linux/man-pages/man3/sem_init.3.html>) *Note
  4293. Linux Kernel::.
  4294. -- Function: int sem_destroy (sem_t *SEM)
  4295. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4296. Concepts::.
  4297. This documentation is a stub. For additional information on this
  4298. function, consult the manual page sem_destroy(3) (Latest, online:
  4299. <https://man7.org/linux/man-pages/man3/sem_destroy.3.html>) *Note
  4300. Linux Kernel::.
  4301. -- Function: sem_t * sem_open (const char *NAME, int OFLAG, ...)
  4302. Preliminary: | MT-Safe | AS-Unsafe init | AC-Unsafe init | *Note
  4303. POSIX Safety Concepts::.
  4304. This documentation is a stub. For additional information on this
  4305. function, consult the manual page sem_open(3) (Latest, online:
  4306. <https://man7.org/linux/man-pages/man3/sem_open.3.html>) *Note
  4307. Linux Kernel::.
  4308. -- Function: int sem_close (sem_t *SEM)
  4309. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4310. POSIX Safety Concepts::.
  4311. This documentation is a stub. For additional information on this
  4312. function, consult the manual page sem_close(3) (Latest, online:
  4313. <https://man7.org/linux/man-pages/man3/sem_close.3.html>) *Note
  4314. Linux Kernel::.
  4315. -- Function: int sem_unlink (const char *NAME)
  4316. Preliminary: | MT-Safe | AS-Unsafe init | AC-Unsafe corrupt | *Note
  4317. POSIX Safety Concepts::.
  4318. This documentation is a stub. For additional information on this
  4319. function, consult the manual page sem_unlink(3) (Latest, online:
  4320. <https://man7.org/linux/man-pages/man3/sem_unlink.3.html>) *Note
  4321. Linux Kernel::.
  4322. -- Function: int sem_wait (sem_t *SEM)
  4323. Preliminary: | MT-Safe | AS-Safe | AC-Unsafe corrupt | *Note POSIX
  4324. Safety Concepts::.
  4325. This documentation is a stub. For additional information on this
  4326. function, consult the manual page sem_wait(3) (Latest, online:
  4327. <https://man7.org/linux/man-pages/man3/sem_wait.3.html>) *Note
  4328. Linux Kernel::.
  4329. -- Function: int sem_timedwait (sem_t *SEM, const struct timespec
  4330. *ABSTIME)
  4331. Preliminary: | MT-Safe | AS-Safe | AC-Unsafe corrupt | *Note POSIX
  4332. Safety Concepts::.
  4333. This documentation is a stub. For additional information on this
  4334. function, consult the manual page sem_timedwait(3) (Latest, online:
  4335. <https://man7.org/linux/man-pages/man3/sem_timedwait.3.html>) *Note
  4336. Linux Kernel::.
  4337. -- Function: int sem_clockwait (sem_t *SEM, clockid_t CLOCKID, const
  4338. struct timespec *ABSTIME)
  4339. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4340. POSIX Safety Concepts::.
  4341. Behaves like ‘sem_timedwait’ except the time ABSTIME is measured
  4342. against the clock specified by CLOCKID rather than
  4343. ‘CLOCK_REALTIME’. Currently, CLOCKID must be either
  4344. ‘CLOCK_MONOTONIC’ or ‘CLOCK_REALTIME’.
  4345. -- Function: int sem_trywait (sem_t *SEM)
  4346. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4347. Concepts::.
  4348. This documentation is a stub. For additional information on this
  4349. function, consult the manual page sem_trywait(3) (Latest, online:
  4350. <https://man7.org/linux/man-pages/man3/sem_trywait.3.html>) *Note
  4351. Linux Kernel::.
  4352. -- Function: int sem_post (sem_t *SEM)
  4353. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4354. Concepts::.
  4355. This documentation is a stub. For additional information on this
  4356. function, consult the manual page sem_post(3) (Latest, online:
  4357. <https://man7.org/linux/man-pages/man3/sem_post.3.html>) *Note
  4358. Linux Kernel::.
  4359. -- Function: int sem_getvalue (sem_t *SEM, int *SVAL)
  4360. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4361. Concepts::.
  4362. This documentation is a stub. For additional information on this
  4363. function, consult the manual page sem_getvalue(3) (Latest, online:
  4364. <https://man7.org/linux/man-pages/man3/sem_getvalue.3.html>) *Note
  4365. Linux Kernel::.
  4366. 
  4367. File: libc.info, Node: POSIX Barriers, Next: POSIX Spin Locks, Prev: POSIX Semaphores, Up: POSIX Threads
  4368. 36.2.5 POSIX Barriers
  4369. ---------------------
  4370. A POSIX barrier works as follows: a file-local or global
  4371. ‘pthread_barrier_t’ object is initialized via ‘pthread_barrier_init’ to
  4372. require COUNT threads to wait on it. After that, up to COUNT-1 threads
  4373. will wait on the barrier via ‘pthread_barrier_wait’. None of these
  4374. calls will return until COUNT threads are waiting via the next call to
  4375. ‘pthread_barrier_wait’, at which point, all of these calls will return.
  4376. The net result is that COUNT threads will be synchronized at that point.
  4377. At some point after this, the barrier is destroyed via
  4378. ‘pthread_barrier_destroy’. Note that a barrier must be destroyed before
  4379. being re-initialized, to ensure that all threads are properly
  4380. synchronized, but need not be destroyed and re-initialized before being
  4381. reused.
  4382. -- Function: int pthread_barrier_init (pthread_barrier_t *BARRIER,
  4383. const pthread_barrierattr_t *ATTR, unsigned int COUNT)
  4384. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4385. Concepts::.
  4386. This function initializes a barrier to synchronize COUNT threads.
  4387. The barrier must be uninitialized or destroyed before it is
  4388. initialized; attempting to initialize an in-use barrier results in
  4389. undefined behavior.
  4390. The ATTR argument to ‘pthread_barrier_init’ is typically NULL for a
  4391. process-private barrier, but may be used to share a barrier across
  4392. processes (documentation TBD).
  4393. On success, 0 is returned. On error, one of the following is
  4394. returned:
  4395. ‘EINVAL’
  4396. Either COUNT is zero, or is large enough to cause an internal
  4397. overflow.
  4398. -- Function: int pthread_barrier_wait (pthread_barrier_t *BARRIER)
  4399. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4400. Concepts::.
  4401. This function synchronizes threads. The first COUNT-1 threads that
  4402. wait on BARRIER will just wait. The next thread that waits on
  4403. BARRIER will cause all COUNT threads' calls to return. The BARRIER
  4404. must be initialized with ‘pthread_barrier_init’ and not yet
  4405. destroyed with ‘pthread_barrier_destroy’.
  4406. The return value of this function is
  4407. ‘PTHREAD_BARRIER_SERIAL_THREAD’ for one thread (it is unspecified
  4408. which thread) and 0 for the remainder, for each batch of COUNT
  4409. threads synchronized. After such a batch is synchronized, the
  4410. BARRIER will begin synchronizing the next COUNT threads.
  4411. -- Function: int pthread_barrier_destroy (pthread_barrier_t *BARRIER)
  4412. Preliminary: | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety
  4413. Concepts::.
  4414. Destroys BARRIER and releases any resources it may have allocated.
  4415. A barrier must not be destroyed if any thread is waiting on it, or
  4416. if it was not initialized. This call always succeeds and returns
  4417. 0.
  4418. 
  4419. File: libc.info, Node: POSIX Spin Locks, Next: POSIX Mutexes, Prev: POSIX Barriers, Up: POSIX Threads
  4420. 36.2.6 POSIX Spin Locks
  4421. -----------------------
  4422. A spinlock is a low overhead lock suitable for use in a realtime thread
  4423. where it's known that the thread won't be paused by the scheduler.
  4424. Non-realtime threads should use mutexes instead.
  4425. -- Function: int pthread_spin_init (pthread_spinlock_t *LOCK, int
  4426. PSHARED)
  4427. Initializes a spinlock. PSHARED is one of:
  4428. ‘PTHREAD_PROCESS_PRIVATE’
  4429. This spinlock is private to the process which created it.
  4430. ‘PTHREAD_PROCESS_SHARED’
  4431. This spinlock is shared across any process that can access it,
  4432. for example through shared memory.
  4433. This documentation is a stub. For additional information on this
  4434. function, consult the manual page pthread_spin_init(3) (Latest,
  4435. online:
  4436. <https://man7.org/linux/man-pages/man3/pthread_spin_init.3.html>)
  4437. *Note Linux Kernel::.
  4438. -- Function: int pthread_spin_destroy (pthread_spinlock_t *LOCK)
  4439. Destroys a spinlock and releases any resources it held. This
  4440. documentation is a stub. For additional information on this
  4441. function, consult the manual page pthread_spin_destroy(3) (Latest,
  4442. online:
  4443. <https://man7.org/linux/man-pages/man3/pthread_spin_destroy.3.html>)
  4444. *Note Linux Kernel::.
  4445. -- Function: int pthread_spin_lock (pthread_spinlock_t *LOCK)
  4446. Locks a spinlock. Only one thread at a time can lock a spinlock.
  4447. If another thread has locked this spinlock, the calling thread
  4448. waits until it is unlocked, then attempts to lock it. This
  4449. documentation is a stub. For additional information on this
  4450. function, consult the manual page pthread_spin_lock(3) (Latest,
  4451. online:
  4452. <https://man7.org/linux/man-pages/man3/pthread_spin_lock.3.html>)
  4453. *Note Linux Kernel::.
  4454. -- Function: int pthread_spin_unlock (pthread_spinlock_t *LOCK)
  4455. Unlocks a spinlock. If one or more threads are waiting for the
  4456. lock to be unlocked, one of them (unspecified which) will succeed
  4457. in locking it, and will return from ‘pthread_spin_lock’). This
  4458. documentation is a stub. For additional information on this
  4459. function, consult the manual page pthread_spin_unlock(3) (Latest,
  4460. online:
  4461. <https://man7.org/linux/man-pages/man3/pthread_spin_unlock.3.html>)
  4462. *Note Linux Kernel::.
  4463. -- Function: int pthread_spin_trylock (pthread_spinlock_t *LOCK)
  4464. Like ‘pthread_spin_unlock’ but returns 0 if the lock was unlocked,
  4465. or EBUSY if it was locked. This documentation is a stub. For
  4466. additional information on this function, consult the manual page
  4467. pthread_spin_trylock(3) (Latest, online:
  4468. <https://man7.org/linux/man-pages/man3/pthread_spin_trylock.3.html>)
  4469. *Note Linux Kernel::.
  4470. 
  4471. File: libc.info, Node: POSIX Mutexes, Next: POSIX Threads Other APIs, Prev: POSIX Spin Locks, Up: POSIX Threads
  4472. 36.2.7 POSIX Mutexes
  4473. --------------------
  4474. A _mutex_, or "mutual exclusion", is a way of guaranteeing that only one
  4475. thread at a time is able to execute a protected bit of code (or access
  4476. any other resource). Two or more threads trying to execute the same
  4477. code at the same time, will instead take turns, according to the mutex.
  4478. A mutex is much like a spinlock, but implemented in a way that is
  4479. more appropriate for use in non-realtime threads, and is more
  4480. resource-conserving.
  4481. -- Function: int pthread_mutex_init (pthread_mutex_t *MUTEX, const
  4482. pthread_mutexattr_t *MUTEXATTR)
  4483. Initiailizes a mutex. This documentation is a stub. For
  4484. additional information on this function, consult the manual page
  4485. pthread_mutex_init(3) (Latest, online:
  4486. <https://man7.org/linux/man-pages/man3/pthread_mutex_init.3.html>)
  4487. *Note Linux Kernel::.
  4488. -- Function: int pthread_mutex_destroy (pthread_mutex_t *MUTEX)
  4489. Destroys a no-longer-needed mutex. This documentation is a stub.
  4490. For additional information on this function, consult the manual
  4491. page pthread_mutex_destroy(3) (Latest, online:
  4492. <https://man7.org/linux/man-pages/man3/pthread_mutex_destroy.3.html>)
  4493. *Note Linux Kernel::.
  4494. -- Function: int pthread_mutex_lock (pthread_mutex_t *MUTEX)
  4495. Only one thread at a time may lock MUTEX, and must unlock it when
  4496. appropriate. If a thread calls ‘pthread_mutex_lock’ while MUTEX is
  4497. locked by another thread, the calling thread will wait until MUTEX
  4498. is unlocked, then attempt to lock it. Since there may be many
  4499. threads waiting at the same time, the calling thread may need to
  4500. repeat this wait-and-try many times before it successfully locks
  4501. MUTEX, at which point the call to ‘pthread_mutex_locks’ returns
  4502. succesfully.
  4503. This function may fail with the following:
  4504. ‘EAGAIN’
  4505. Too many locks were attempted.
  4506. ‘EDEADLK’
  4507. The calling thread already holds a lock on MUTEX.
  4508. ‘EINVAL’
  4509. MUTEX has an invalid kind, or an invalid priority was
  4510. requested.
  4511. ‘ENOTRECOVERABLE’
  4512. The thread holding the lock died in a way that the system
  4513. cannot recover from.
  4514. ‘EOWNERDEAD’
  4515. The thread holding the lock died in a way that the system can
  4516. recover from.
  4517. This documentation is a stub. For additional information on this
  4518. function, consult the manual page pthread_mutex_lock(3) (Latest,
  4519. online:
  4520. <https://man7.org/linux/man-pages/man3/pthread_mutex_lock.3.html>)
  4521. *Note Linux Kernel::.
  4522. -- Function: int pthread_mutex_trylock (pthread_mutex_t *MUTEX)
  4523. Like ‘pthread_mutex_lock’ but if the lock cannot be immediately
  4524. obtained, returns EBUSY. This documentation is a stub. For
  4525. additional information on this function, consult the manual page
  4526. pthread_mutex_trylock(3) (Latest, online:
  4527. <https://man7.org/linux/man-pages/man3/pthread_mutex_trylock.3.html>)
  4528. *Note Linux Kernel::.
  4529. -- Function: int pthread_mutex_unlock (pthread_mutex_t *MUTEX)
  4530. Unlocks MUTEX. Returns EPERM if the calling thread doesn't hold
  4531. the lock on MUTEX. This documentation is a stub. For additional
  4532. information on this function, consult the manual page
  4533. pthread_mutex_unlock(3) (Latest, online:
  4534. <https://man7.org/linux/man-pages/man3/pthread_mutex_unlock.3.html>)
  4535. *Note Linux Kernel::.
  4536. -- Function: int pthread_mutex_clocklock (pthread_mutex_t *MUTEX,
  4537. clockid_t CLOCKID, const struct timespec *ABSTIME)
  4538. -- Function: int pthread_mutex_timedlock (pthread_mutex_t *MUTEX, const
  4539. struct timespec *ABSTIME)
  4540. These two functions act like ‘pthread_mutex_lock’ with the
  4541. exception that the call will not wait past time ABSTIME, as
  4542. reported by CLOCKID or (for ‘pthread_mutex_timedlock’)
  4543. ‘CLOCK_REALTIME’. If ABSTIME is reached and the mutex still cannot
  4544. be locked, an ‘ETIMEDOUT’ error is returned. If the time had
  4545. already passed when these functions are called, and the mutex
  4546. cannot be immediately locked, the function times out immediately.
  4547. -- Function: int pthread_mutexattr_init (const pthread_mutexattr_t
  4548. *ATTR)
  4549. Initializes ATTR with default values. This documentation is a
  4550. stub. For additional information on this function, consult the
  4551. manual page pthread_mutexattr_init(3) (Latest, online:
  4552. <https://man7.org/linux/man-pages/man3/pthread_mutexattr_init.3.html>)
  4553. *Note Linux Kernel::.
  4554. -- Function: int pthread_mutexattr_destroy (pthread_mutexattr_t *ATTR)
  4555. Destroys ATTR and releases any resources it may have allocated.
  4556. This documentation is a stub. For additional information on this
  4557. function, consult the manual page pthread_mutexattr_destroy(3)
  4558. (Latest, online:
  4559. <https://man7.org/linux/man-pages/man3/pthread_mutexattr_destroy.3.html>)
  4560. *Note Linux Kernel::.
  4561. -- Function: int pthread_mutexattr_settype (pthread_mutexattr_t *ATTR,
  4562. int KIND)
  4563. This functions allow you to change what kind of mutex a mutex is,
  4564. by changing the attributes used to initialize it. The values for
  4565. KIND are:
  4566. ‘PTHREAD_MUTEX_NORMAL’
  4567. No attempt to detect deadlock is performed; a thread will
  4568. deadlock if it tries to lock this mutex yet already holds a
  4569. lock to it. Attempting to unlock a mutex not locked by the
  4570. calling thread results in undefined behavior.
  4571. ‘PTHREAD_MUTEX_ERRORCHECK’
  4572. Attemps to relock a mutex, or unlock a mutex not held, will
  4573. result in an error.
  4574. ‘PTHREAD_MUTEX_RECURSIVE’
  4575. Attempts to relock a mutex already held succeed, but require a
  4576. matching number of unlocks to release it. Attempts to unlock
  4577. a mutex not held will result in an error.
  4578. ‘PTHREAD_MUTEX_DEFAULT’
  4579. Attemps to relock a mutex, or unlock a mutex not held, will
  4580. result in undefined behavior. This is the default.
  4581. -- Function: int pthread_mutexattr_gettype (const pthread_mutexattr_t
  4582. *ATTR, int *KIND)
  4583. This function gets the kind of mutex MUTEX is.
  4584. 
  4585. File: libc.info, Node: POSIX Threads Other APIs, Next: Non-POSIX Extensions, Prev: POSIX Mutexes, Up: POSIX Threads
  4586. 36.2.8 POSIX Threads Other APIs
  4587. -------------------------------
  4588. -- Function: int pthread_equal (pthread_t THREAD1, pthread_t THREAD2)
  4589. Compares two thread IDs. If they are the same, returns nonzero,
  4590. else returns zero. This documentation is a stub. For additional
  4591. information on this function, consult the manual page
  4592. pthread_equal(3) (Latest, online:
  4593. <https://man7.org/linux/man-pages/man3/pthread_equal.3.html>) *Note
  4594. Linux Kernel::.
  4595. -- Function: int pthread_getcpuclockid (pthread_t TH, __clockid_t
  4596. *CLOCK_ID)
  4597. Get the clock associated with TH. This documentation is a stub.
  4598. For additional information on this function, consult the manual
  4599. page pthread_getcpuclockid(3) (Latest, online:
  4600. <https://man7.org/linux/man-pages/man3/pthread_getcpuclockid.3.html>)
  4601. *Note Linux Kernel::.
  4602. -- Function: int pthread_once (pthread_once_t *ONCE_CONTROL, void
  4603. (*INIT_ROUTINE) (void))
  4604. Calls INIT_ROUTINE once for each ONCE_CONTROL, which must be
  4605. statically initalized to ‘PTHREAD_ONCE_INIT’. Subsequent calls to
  4606. ‘pthread_once’ with the same ONCE_CONTROL do not call INIT_ROUTINE,
  4607. even in multi-threaded environments. This documentation is a stub.
  4608. For additional information on this function, consult the manual
  4609. page pthread_once(3) (Latest, online:
  4610. <https://man7.org/linux/man-pages/man3/pthread_once.3.html>) *Note
  4611. Linux Kernel::.
  4612. -- Function: int pthread_sigmask (int HOW, const __sigset_t *NEWMASK,
  4613. __sigset_t *OLDMASK)
  4614. This documentation is a stub. For additional information on this
  4615. function, consult the manual page pthread_sigmask(3) (Latest,
  4616. online:
  4617. <https://man7.org/linux/man-pages/man3/pthread_sigmask.3.html>)
  4618. *Note Linux Kernel::.
  4619. 
  4620. File: libc.info, Node: Non-POSIX Extensions, Prev: POSIX Threads Other APIs, Up: POSIX Threads
  4621. 36.2.9 Non-POSIX Extensions
  4622. ---------------------------
  4623. In addition to implementing the POSIX API for threads, the GNU C Library
  4624. provides additional functions and interfaces to provide functionality
  4625. not specified in the standard.
  4626. * Menu:
  4627. * Default Thread Attributes:: Setting default attributes for
  4628. threads in a process.
  4629. * Initial Thread Signal Mask:: Setting the initial mask of threads.
  4630. * Thread CPU Affinity:: Limiting which CPUs can run a thread.
  4631. * Joining Threads:: Wait for a thread to terminate.
  4632. * Thread Names:: Changing the name of a thread.
  4633. * Single-Threaded:: Detecting single-threaded execution.
  4634. * Restartable Sequences:: Linux-specific restartable sequences
  4635. integration.
  4636. 
  4637. File: libc.info, Node: Default Thread Attributes, Next: Initial Thread Signal Mask, Up: Non-POSIX Extensions
  4638. 36.2.9.1 Setting Process-wide defaults for thread attributes
  4639. ............................................................
  4640. The GNU C Library provides non-standard API functions to set and get the
  4641. default attributes used in the creation of threads in a process.
  4642. -- Function: int pthread_getattr_default_np (pthread_attr_t *ATTR)
  4643. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4644. POSIX Safety Concepts::.
  4645. Get the default attribute values and set ATTR to match. This
  4646. function returns 0 on success and a non-zero error code on failure.
  4647. -- Function: int pthread_setattr_default_np (pthread_attr_t *ATTR)
  4648. Preliminary: | MT-Safe | AS-Unsafe heap lock | AC-Unsafe lock mem |
  4649. *Note POSIX Safety Concepts::.
  4650. Set the default attribute values to match the values in ATTR. The
  4651. function returns 0 on success and a non-zero error code on failure.
  4652. The following error codes are defined for this function:
  4653. ‘EINVAL’
  4654. At least one of the values in ATTR does not qualify as valid
  4655. for the attributes or the stack address is set in the
  4656. attribute.
  4657. ‘ENOMEM’
  4658. The system does not have sufficient memory.
  4659. 
  4660. File: libc.info, Node: Initial Thread Signal Mask, Next: Thread CPU Affinity, Prev: Default Thread Attributes, Up: Non-POSIX Extensions
  4661. 36.2.9.2 Controlling the Initial Signal Mask of a New Thread
  4662. ............................................................
  4663. The GNU C Library provides a way to specify the initial signal mask of a
  4664. thread created using ‘pthread_create’, passing a thread attribute object
  4665. configured for this purpose.
  4666. -- Function: int pthread_attr_setsigmask_np (pthread_attr_t *ATTR,
  4667. const sigset_t *SIGMASK)
  4668. Preliminary: | MT-Safe | AS-Unsafe heap | AC-Unsafe mem | *Note
  4669. POSIX Safety Concepts::.
  4670. Change the initial signal mask specified by ATTR. If SIGMASK is
  4671. not ‘NULL’, the initial signal mask for new threads created with
  4672. ATTR is set to ‘*SIGMASK’. If SIGMASK is ‘NULL’, ATTR will no
  4673. longer specify an explicit signal mask, so that the initial signal
  4674. mask of the new thread is inherited from the thread that calls
  4675. ‘pthread_create’.
  4676. This function returns zero on success, and ‘ENOMEM’ on memory
  4677. allocation failure.
  4678. -- Function: int pthread_attr_getsigmask_np (const pthread_attr_t
  4679. *ATTR, sigset_t *SIGMASK)
  4680. Preliminary: | MT-Safe | AS-Unsafe heap | AC-Unsafe mem | *Note
  4681. POSIX Safety Concepts::.
  4682. Retrieve the signal mask stored in ATTR and copy it to ‘*SIGMASK’.
  4683. If the signal mask has not been set, return the special constant
  4684. ‘PTHREAD_ATTR_NO_SIGMASK_NP’, otherwise return zero.
  4685. Obtaining the signal mask only works if it has been previously
  4686. stored by ‘pthread_attr_setsigmask_np’. For example, the
  4687. ‘pthread_getattr_np’ function does not obtain the current signal
  4688. mask of the specified thread, and ‘pthread_attr_getsigmask_np’ will
  4689. subsequently report the signal mask as unset.
  4690. -- Macro: int PTHREAD_ATTR_NO_SIGMASK_NP
  4691. The special value returned by ‘pthread_attr_setsigmask_np’ to
  4692. indicate that no signal mask has been set for the attribute.
  4693. It is possible to create a new thread with a specific signal mask
  4694. without using these functions. On the thread that calls
  4695. ‘pthread_create’, the required steps for the general case are:
  4696. 1. Mask all signals, and save the old signal mask, using
  4697. ‘pthread_sigmask’. This ensures that the new thread will be
  4698. created with all signals masked, so that no signals can be
  4699. delivered to the thread until the desired signal mask is set.
  4700. 2. Call ‘pthread_create’ to create the new thread, passing the desired
  4701. signal mask to the thread start routine (which could be a wrapper
  4702. function for the actual thread start routine). It may be necessary
  4703. to make a copy of the desired signal mask on the heap, so that the
  4704. life-time of the copy extends to the point when the start routine
  4705. needs to access the signal mask.
  4706. 3. Restore the thread's signal mask, to the set that was saved in the
  4707. first step.
  4708. The start routine for the created thread needs to locate the desired
  4709. signal mask and use ‘pthread_sigmask’ to apply it to the thread. If the
  4710. signal mask was copied to a heap allocation, the copy should be freed.
  4711. 
  4712. File: libc.info, Node: Thread CPU Affinity, Next: Joining Threads, Prev: Initial Thread Signal Mask, Up: Non-POSIX Extensions
  4713. 36.2.9.3 Thread CPU Affinity
  4714. ............................
  4715. Processes and threads normally run on any available CPU. However, they
  4716. can be given an _affinity_ to one or more CPUs, which limits them to the
  4717. CPU set specified.
  4718. -- Function: int pthread_attr_setaffinity_np (pthread_attr_t *ATTR,
  4719. size_t CPUSETSIZE, const cpu_set_t *CPUSET)
  4720. Sets the CPU affinity in ATTR. The CPU affinity controls which
  4721. CPUs a thread may execute on. *Note CPU Affinity::. This
  4722. documentation is a stub. For additional information on this
  4723. function, consult the manual page pthread_attr_setaffinity_np(3)
  4724. (Latest, online:
  4725. <https://man7.org/linux/man-pages/man3/pthread_attr_setaffinity_np.3.html>)
  4726. *Note Linux Kernel::.
  4727. -- Function: int pthread_attr_getaffinity_np (const pthread_attr_t
  4728. *ATTR, size_t CPUSETSIZE, cpu_set_t *CPUSET)
  4729. Gets the CPU affinity settings from ATTR. This documentation is a
  4730. stub. For additional information on this function, consult the
  4731. manual page pthread_attr_getaffinity_np(3) (Latest, online:
  4732. <https://man7.org/linux/man-pages/man3/pthread_attr_getaffinity_np.3.html>)
  4733. *Note Linux Kernel::.
  4734. -- Function: int pthread_setaffinity_np (pthread_t *TH, size_t
  4735. CPUSETSIZE, const cpu_set_t *CPUSET)
  4736. Sets the CPU affinity for thread TH. The CPU affinity controls
  4737. which CPUs a thread may execute on. *Note CPU Affinity::. This
  4738. documentation is a stub. For additional information on this
  4739. function, consult the manual page pthread_setaffinity_np(3)
  4740. (Latest, online:
  4741. <https://man7.org/linux/man-pages/man3/pthread_setaffinity_np.3.html>)
  4742. *Note Linux Kernel::.
  4743. -- Function: int pthread_getaffinity_np (const pthread_t *TH, size_t
  4744. CPUSETSIZE, cpu_set_t *CPUSET)
  4745. Gets the CPU affinity for thread TH. The CPU affinity controls
  4746. which CPUs a thread may execute on. *Note CPU Affinity::. This
  4747. documentation is a stub. For additional information on this
  4748. function, consult the manual page pthread_getaffinity_np(3)
  4749. (Latest, online:
  4750. <https://man7.org/linux/man-pages/man3/pthread_getaffinity_np.3.html>)
  4751. *Note Linux Kernel::.
  4752. 
  4753. File: libc.info, Node: Joining Threads, Next: Thread Names, Prev: Thread CPU Affinity, Up: Non-POSIX Extensions
  4754. 36.2.9.4 Wait for a thread to terminate
  4755. .......................................
  4756. The GNU C Library provides several extensions to the ‘pthread_join’
  4757. function.
  4758. -- Function: int pthread_tryjoin_np (pthread_t *THREAD, void
  4759. **THREAD_RETURN)
  4760. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4761. POSIX Safety Concepts::.
  4762. Behaves like ‘pthread_join’ except that it will return ‘EBUSY’
  4763. immediately if the thread specified by THREAD has not yet
  4764. terminated.
  4765. -- Function: int pthread_timedjoin_np (pthread_t *THREAD, void
  4766. **THREAD_RETURN, const struct timespec *ABSTIME)
  4767. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4768. POSIX Safety Concepts::.
  4769. Behaves like ‘pthread_tryjoin_np’ except that it will block until
  4770. the absolute time ABSTIME measured against ‘CLOCK_REALTIME’ is
  4771. reached if the thread has not terminated by that time and return
  4772. ‘EBUSY’. If ABSTIME is equal to ‘NULL’ then the function will wait
  4773. forever in the same way as ‘pthread_join’.
  4774. -- Function: int pthread_clockjoin_np (pthread_t *THREAD, void
  4775. **THREAD_RETURN, clockid_t CLOCKID, const struct timespec
  4776. *ABSTIME)
  4777. Preliminary: | MT-Safe | AS-Unsafe lock | AC-Unsafe lock | *Note
  4778. POSIX Safety Concepts::.
  4779. Behaves like ‘pthread_timedjoin_np’ except that the absolute time
  4780. in ABSTIME is measured against the clock specified by CLOCKID.
  4781. Currently, CLOCKID must be either ‘CLOCK_MONOTONIC’ or
  4782. ‘CLOCK_REALTIME’.
  4783. The ‘sem_clockwait’ function also works using a ‘clockid_t’ argument.
  4784. *Note POSIX Semaphores::.
  4785. 
  4786. File: libc.info, Node: Thread Names, Next: Single-Threaded, Prev: Joining Threads, Up: Non-POSIX Extensions
  4787. 36.2.9.5 Thread Names
  4788. .....................
  4789. -- Function: int pthread_setname_np (pthread_t TH, const char *NAME)
  4790. Gives thread TH the name NAME. This name shows up in ‘ps’ when
  4791. it's listing individual threads. NAME is a NUL-terminated string
  4792. of no more than 15 non-NUL characters. This documentation is a
  4793. stub. For additional information on this function, consult the
  4794. manual page pthread_setname_np(3) (Latest, online:
  4795. <https://man7.org/linux/man-pages/man3/pthread_setname_np.3.html>)
  4796. *Note Linux Kernel::.
  4797. -- Function: int pthread_getname_np (pthread_t TH, char *BUF, size_t
  4798. BUFLEN)
  4799. Retrieves the name of thread TH. This documentation is a stub.
  4800. For additional information on this function, consult the manual
  4801. page pthread_getname_np(3) (Latest, online:
  4802. <https://man7.org/linux/man-pages/man3/pthread_getname_np.3.html>)
  4803. *Note Linux Kernel::.
  4804. 
  4805. File: libc.info, Node: Single-Threaded, Next: Restartable Sequences, Prev: Thread Names, Up: Non-POSIX Extensions
  4806. 36.2.9.6 Detecting Single-Threaded Execution
  4807. ............................................
  4808. Multi-threaded programs require synchronization among threads. This
  4809. synchronization can be costly even if there is just a single thread and
  4810. no data is shared between multiple processors. The GNU C Library offers
  4811. an interface to detect whether the process is in single-threaded mode.
  4812. Applications can use this information to avoid synchronization, for
  4813. example by using regular instructions to load and store memory instead
  4814. of atomic instructions, or using relaxed memory ordering instead of
  4815. stronger memory ordering.
  4816. -- Variable: char __libc_single_threaded
  4817. This variable is non-zero if the current process is definitely
  4818. single-threaded. If it is zero, the process may be multi-threaded,
  4819. or the GNU C Library cannot determine at this point of the program
  4820. execution whether the process is single-threaded or not.
  4821. Applications must never write to this variable.
  4822. Most applications should perform the same actions whether or not
  4823. ‘__libc_single_threaded’ is true, except with less synchronization. If
  4824. this rule is followed, a process that subsequently becomes
  4825. multi-threaded is already in a consistent state. For example, in order
  4826. to increment a reference count, the following code can be used:
  4827. if (__libc_single_threaded)
  4828. atomic_fetch_add (&reference_count, 1, memory_order_relaxed);
  4829. else
  4830. atomic_fetch_add (&reference_count, 1, memory_order_acq_rel);
  4831. This still requires some form of synchronization on the
  4832. single-threaded branch, so it can be beneficial not to declare the
  4833. reference count as ‘_Atomic’, and use the GCC ‘__atomic’ built-ins.
  4834. *Note Built-in Functions for Memory Model Aware Atomic Operations:
  4835. (gcc)__atomic Builtins. Then the code to increment a reference count
  4836. looks like this:
  4837. if (__libc_single_threaded)
  4838. ++reference_count;
  4839. else
  4840. __atomic_fetch_add (&reference_count, 1, __ATOMIC_ACQ_REL);
  4841. (Depending on the data associated with the reference count, it may be
  4842. possible to use the weaker ‘__ATOMIC_RELAXED’ memory ordering on the
  4843. multi-threaded branch.)
  4844. Several functions in the GNU C Library can change the value of the
  4845. ‘__libc_single_threaded’ variable. For example, creating new threads
  4846. using the ‘pthread_create’ or ‘thrd_create’ function sets the variable
  4847. to false. This can also happen indirectly, say via a call to ‘dlopen’.
  4848. Therefore, applications need to make a copy of the value of
  4849. ‘__libc_single_threaded’ if after such a function call, behavior must
  4850. match the value as it was before the call, like this:
  4851. bool single_threaded = __libc_single_threaded;
  4852. if (single_threaded)
  4853. prepare_single_threaded ();
  4854. else
  4855. prepare_multi_thread ();
  4856. void *handle = dlopen (shared_library_name, RTLD_NOW);
  4857. lookup_symbols (handle);
  4858. if (single_threaded)
  4859. cleanup_single_threaded ();
  4860. else
  4861. cleanup_multi_thread ();
  4862. Since the value of ‘__libc_single_threaded’ can change from true to
  4863. false during the execution of the program, it is not useful for
  4864. selecting optimized function implementations in IFUNC resolvers.
  4865. Atomic operations can also be used on mappings shared among
  4866. single-threaded processes. This means that a compiler must not use
  4867. ‘__libc_single_threaded’ to optimize atomic operations, unless it is
  4868. able to prove that the memory is not shared.
  4869. *Implementation Note:* The ‘__libc_single_threaded’ variable is not
  4870. declared as ‘volatile’ because it is expected that compilers optimize a
  4871. sequence of single-threaded checks into one check, for example if
  4872. several reference counts are updated. The current implementation in the
  4873. GNU C Library does not set the ‘__libc_single_threaded’ variable to a
  4874. true value if a process turns single-threaded again. Future versions of
  4875. the GNU C Library may do this, but only as the result of function calls
  4876. which imply an acquire (compiler) barrier. (Some compilers assume that
  4877. well-known functions such as ‘malloc’ do not write to global variables,
  4878. and setting ‘__libc_single_threaded’ would introduce a data race and
  4879. undefined behavior.) In any case, an application must not write to
  4880. ‘__libc_single_threaded’ even if it has joined the last
  4881. application-created thread because future versions of the GNU C Library
  4882. may create background threads after the first thread has been created,
  4883. and the application has no way of knowing that these threads are
  4884. present.
  4885. 
  4886. File: libc.info, Node: Restartable Sequences, Prev: Single-Threaded, Up: Non-POSIX Extensions
  4887. 36.2.9.7 Restartable Sequences
  4888. ..............................
  4889. This section describes restartable sequences integration for the GNU C
  4890. Library. This functionality is only available on Linux.
  4891. -- Data Type: struct rseq
  4892. The type of the restartable sequences area. Future versions of
  4893. Linux may add additional fields to the end of this structure.
  4894. Users need to obtain the address of the restartable sequences area
  4895. using the thread pointer and the ‘__rseq_offset’ variable,
  4896. described below.
  4897. One use of the restartable sequences area is to read the current
  4898. CPU number from its ‘cpu_id’ field, as an inline version of
  4899. ‘sched_getcpu’. The GNU C Library sets the ‘cpu_id’ field to
  4900. ‘RSEQ_CPU_ID_REGISTRATION_FAILED’ if registration failed or was
  4901. explicitly disabled.
  4902. Furthermore, users can store the address of a ‘struct rseq_cs’
  4903. object into the ‘rseq_cs’ field of ‘struct rseq’, thus informing
  4904. the kernel that the thread enters a restartable sequence critical
  4905. section. This pointer and the code areas it itself points to must
  4906. not be left pointing to memory areas which are freed or re-used.
  4907. Several approaches can guarantee this. If the application or
  4908. library can guarantee that the memory used to hold the ‘struct
  4909. rseq_cs’ and the code areas it refers to are never freed or
  4910. re-used, no special action must be taken. Else, before that memory
  4911. is re-used of freed, the application is responsible for setting the
  4912. ‘rseq_cs’ field to ‘NULL’ in each thread's restartable sequence
  4913. area to guarantee that it does not leak dangling references.
  4914. Because the application does not typically have knowledge of
  4915. libraries' use of restartable sequences, it is recommended that
  4916. libraries using restartable sequences which may end up freeing or
  4917. re-using their memory set the ‘rseq_cs’ field to ‘NULL’ before
  4918. returning from library functions which use restartable sequences.
  4919. The manual for the ‘rseq’ system call can be found at
  4920. <https://git.kernel.org/pub/scm/libs/librseq/librseq.git/tree/doc/man/rseq.2>.
  4921. -- Variable: ptrdiff_t __rseq_offset
  4922. This variable contains the offset between the thread pointer (as
  4923. defined by ‘__builtin_thread_pointer’ or the thread pointer
  4924. register for the architecture) and the restartable sequences area.
  4925. This value is the same for all threads in the process. If the
  4926. restartable sequences area is located at a lower address than the
  4927. location to which the thread pointer points, the value is negative.
  4928. -- Variable: unsigned int __rseq_size
  4929. This variable is either zero (if restartable sequence registration
  4930. failed or has been disabled) or the size of the restartable
  4931. sequence registration. This can be different from the size of
  4932. ‘struct rseq’ if the kernel has extended the size of the
  4933. registration. If registration is successful, ‘__rseq_size’ is at
  4934. least 20 (the initially active size of ‘struct rseq’).
  4935. Previous versions of the GNU C Library set this to 32 even if the
  4936. kernel only supported the initial area of 20 bytes because the
  4937. value included unused padding at the end of the restartable
  4938. sequence area.
  4939. -- Variable: unsigned int __rseq_flags
  4940. The flags used during restartable sequence registration with the
  4941. kernel. Currently zero.
  4942. -- Macro: int RSEQ_SIG
  4943. Each supported architecture provides a ‘RSEQ_SIG’ macro in
  4944. ‘sys/rseq.h’ which contains a signature. That signature is
  4945. expected to be present in the code before each restartable
  4946. sequences abort handler. Failure to provide the expected signature
  4947. may terminate the process with a segmentation fault.
  4948. 
  4949. File: libc.info, Node: Dynamic Linker, Next: Internal Probes, Prev: Threads, Up: Top
  4950. 37 Dynamic Linker
  4951. *****************
  4952. The “dynamic linker” is responsible for loading dynamically linked
  4953. programs and their dependencies (in the form of shared objects). The
  4954. dynamic linker in the GNU C Library also supports loading shared objects
  4955. (such as plugins) later at run time.
  4956. Dynamic linkers are sometimes called “dynamic loaders”.
  4957. * Menu:
  4958. * Dynamic Linker Invocation:: Explicit invocation of the dynamic linker.
  4959. * Dynamic Linker Environment Variables:: Environment variables that control the
  4960. dynamic linker.
  4961. * Dynamic Linker Introspection:: Interfaces for querying mapping information.
  4962. * Dynamic Linker Hardening:: Avoiding unexpected issues with dynamic linking.
  4963. 
  4964. File: libc.info, Node: Dynamic Linker Invocation, Next: Dynamic Linker Environment Variables, Up: Dynamic Linker
  4965. 37.1 Dynamic Linker Invocation
  4966. ==============================
  4967. When a dynamically linked program starts, the operating system
  4968. automatically loads the dynamic linker along with the program. The GNU
  4969. C Library also supports invoking the dynamic linker explicitly to launch
  4970. a program. This command uses the implied dynamic linker (also sometimes
  4971. called the “program interpreter”):
  4972. sh -c 'echo "Hello, world!"'
  4973. This command specifies the dynamic linker explicitly:
  4974. ld.so /bin/sh -c 'echo "Hello, world!"'
  4975. Note that ‘ld.so’ does not search the ‘PATH’ environment variable, so
  4976. the full file name of the executable needs to be specified.
  4977. The ‘ld.so’ program supports various options. Options start ‘--’ and
  4978. need to come before the program that is being launched. Some of the
  4979. supported options are listed below.
  4980. ‘--list-diagnostics’
  4981. Print system diagnostic information in a machine-readable format.
  4982. *Note Dynamic Linker Diagnostics::.
  4983. * Menu:
  4984. * Dynamic Linker Diagnostics:: Obtaining system diagnostic information.
  4985. 
  4986. File: libc.info, Node: Dynamic Linker Diagnostics, Up: Dynamic Linker Invocation
  4987. 37.1.1 Dynamic Linker Diagnostics
  4988. ---------------------------------
  4989. The ‘ld.so --list-diagnostics’ produces machine-readable diagnostics
  4990. output. This output contains system data that affects the behavior of
  4991. the GNU C Library, and potentially application behavior as well.
  4992. The exact set of diagnostic items can change between releases of the
  4993. GNU C Library. The output format itself is not expected to change
  4994. radically.
  4995. The following table shows some example lines that can be written by
  4996. the diagnostics command.
  4997. ‘dl_pagesize=0x1000’
  4998. The system page size is 4096 bytes.
  4999. ‘env[0x14]="LANG=en_US.UTF-8"’
  5000. This item indicates that the 21st environment variable at process
  5001. startup contains a setting for ‘LANG’.
  5002. ‘env_filtered[0x22]="DISPLAY"’
  5003. The 35th environment variable is ‘DISPLAY’. Its value is not
  5004. included in the output for privacy reasons because it is not
  5005. recognized as harmless by the diagnostics code.
  5006. ‘path.prefix="/usr"’
  5007. This means that the GNU C Library was configured with
  5008. ‘--prefix=/usr’.
  5009. ‘path.system_dirs[0x0]="/lib64/"’
  5010. ‘path.system_dirs[0x1]="/usr/lib64/"’
  5011. The built-in dynamic linker search path contains two directories,
  5012. ‘/lib64’ and ‘/usr/lib64’.
  5013. * Menu:
  5014. * Dynamic Linker Diagnostics Format:: Format of ld.so output.
  5015. * Dynamic Linker Diagnostics Values:: Data contain in ld.so output.
  5016. 
  5017. File: libc.info, Node: Dynamic Linker Diagnostics Format, Next: Dynamic Linker Diagnostics Values, Up: Dynamic Linker Diagnostics
  5018. 37.1.1.1 Dynamic Linker Diagnostics Format
  5019. ..........................................
  5020. As seen above, diagnostic lines assign values (integers or strings) to a
  5021. sequence of labeled subscripts, separated by ‘.’. Some subscripts have
  5022. integer indices associated with them. The subscript indices are not
  5023. necessarily contiguous or small, so an associative array should be used
  5024. to store them. Currently, all integers fit into the 64-bit unsigned
  5025. integer range. Every access path to a value has a fixed type (string or
  5026. integer) independent of subscript index values. Likewise, whether a
  5027. subscript is indexed does not depend on previous indices (but may depend
  5028. on previous subscript labels).
  5029. A syntax description in ABNF (RFC 5234) follows. Note that ‘%x30-39’
  5030. denotes the range of decimal digits. Diagnostic output lines are
  5031. expected to match the ‘line’ production.
  5032. HEXDIG = %x30-39 / %x61-6f ; lowercase a-f only
  5033. ALPHA = %x41-5a / %x61-7a / %x7f ; letters and underscore
  5034. ALPHA-NUMERIC = ALPHA / %x30-39 / "_"
  5035. DQUOTE = %x22 ; "
  5036. ; Numbers are always hexadecimal and use a 0x prefix.
  5037. hex-value-prefix = %x30 %x78
  5038. hex-value = hex-value-prefix 1*HEXDIG
  5039. ; Strings use octal escape sequences and \\, \".
  5040. string-char = %x20-21 / %x23-5c / %x5d-7e ; printable but not "\
  5041. string-quoted-octal = %x30-33 2*2%x30-37
  5042. string-quoted = "\" ("\" / DQUOTE / string-quoted-octal)
  5043. string-value = DQUOTE *(string-char / string-quoted) DQUOTE
  5044. value = hex-value / string-value
  5045. label = ALPHA *ALPHA-NUMERIC
  5046. index = "[" hex-value "]"
  5047. subscript = label [index]
  5048. line = subscript *("." subscript) "=" value
  5049. 
  5050. File: libc.info, Node: Dynamic Linker Diagnostics Values, Prev: Dynamic Linker Diagnostics Format, Up: Dynamic Linker Diagnostics
  5051. 37.1.1.2 Dynamic Linker Diagnostics Values
  5052. ..........................................
  5053. As mentioned above, the set of diagnostics may change between the GNU C
  5054. Library releases. Nevertheless, the following table documents a few
  5055. common diagnostic items. All numbers are in hexadecimal, with a ‘0x’
  5056. prefix.
  5057. ‘dl_dst_lib=STRING’
  5058. The ‘$LIB’ dynamic string token expands to STRING.
  5059. ‘dl_hwcap=INTEGER’
  5060. ‘dl_hwcap2=INTEGER’
  5061. The HWCAP and HWCAP2 values, as returned for ‘getauxval’, and as
  5062. used in other places depending on the architecture.
  5063. ‘dl_pagesize=INTEGER’
  5064. The system page size is INTEGER bytes.
  5065. ‘dl_platform=STRING’
  5066. The ‘$PLATFORM’ dynamic string token expands to STRING.
  5067. ‘dso.libc=STRING’
  5068. This is the soname of the shared ‘libc’ object that is part of the
  5069. GNU C Library. On most architectures, this is ‘libc.so.6’.
  5070. ‘env[INDEX]=STRING’
  5071. ‘env_filtered[INDEX]=STRING’
  5072. An environment variable from the process environment. The integer
  5073. INDEX is the array index in the environment array. Variables under
  5074. ‘env’ include the variable value after the ‘=’ (assuming that it
  5075. was present), variables under ‘env_filtered’ do not.
  5076. ‘path.prefix=STRING’
  5077. This indicates that the GNU C Library was configured using
  5078. ‘--prefix=STRING’.
  5079. ‘path.sysconfdir=STRING’
  5080. The GNU C Library was configured (perhaps implicitly) with
  5081. ‘--sysconfdir=STRING’ (typically ‘/etc’).
  5082. ‘path.system_dirs[INDEX]=STRING’
  5083. These items list the elements of the built-in array that describes
  5084. the default library search path. The value STRING is a directory
  5085. file name with a trailing ‘/’.
  5086. ‘path.rtld=STRING’
  5087. This string indicates the application binary interface (ABI) file
  5088. name of the run-time dynamic linker.
  5089. ‘version.release="stable"’
  5090. ‘version.release="development"’
  5091. The value ‘"stable"’ indicates that this build of the GNU C Library
  5092. is from a release branch. Releases labeled as ‘"development"’ are
  5093. unreleased development versions.
  5094. ‘version.version="MAJOR.MINOR"’
  5095. ‘version.version="MAJOR.MINOR.9000"’
  5096. The GNU C Library version. Development releases end in ‘.9000’.
  5097. ‘auxv[INDEX].a_type=TYPE’
  5098. ‘auxv[INDEX].a_val=INTEGER’
  5099. ‘auxv[INDEX].a_val_string=STRING’
  5100. An entry in the auxiliary vector (specific to Linux). The values
  5101. TYPE (an integer) and INTEGER correspond to the members of ‘struct
  5102. auxv’. If the value is a string, ‘a_val_string’ is used instead of
  5103. ‘a_val’, so that values have consistent types.
  5104. The ‘AT_HWCAP’ and ‘AT_HWCAP2’ values in this output do not reflect
  5105. adjustment by the GNU C Library.
  5106. ‘uname.sysname=STRING’
  5107. ‘uname.nodename=STRING’
  5108. ‘uname.release=STRING’
  5109. ‘uname.version=STRING’
  5110. ‘uname.machine=STRING’
  5111. ‘uname.domain=STRING’
  5112. These Linux-specific items show the values of ‘struct utsname’, as
  5113. reported by the ‘uname’ function. *Note Platform Type::.
  5114. ‘aarch64.cpu_features....’
  5115. These items are specific to the AArch64 architectures. They report
  5116. data the GNU C Library uses to activate conditionally supported
  5117. features such as BTI and MTE, and to select alternative function
  5118. implementations.
  5119. ‘aarch64.processor[INDEX]....’
  5120. These are additional items for the AArch64 architecture and are
  5121. described below.
  5122. ‘aarch64.processor[INDEX].requested=KERNEL-CPU’
  5123. The kernel is told to run the subsequent probing on the CPU
  5124. numbered KERNEL-CPU. The values KERNEL-CPU and INDEX can be
  5125. distinct if there are gaps in the process CPU affinity mask. This
  5126. line is not included if CPU affinity mask information is not
  5127. available.
  5128. ‘aarch64.processor[INDEX].observed=KERNEL-CPU’
  5129. This line reports the kernel CPU number KERNEL-CPU on which the
  5130. probing code initially ran. If the CPU number cannot be obtained,
  5131. this line is not printed.
  5132. ‘aarch64.processor[INDEX].observed_node=NODE’
  5133. This reports the observed NUMA node number, as reported by the
  5134. ‘getcpu’ system call. If this information cannot be obtained, this
  5135. line is not printed.
  5136. ‘aarch64.processor[INDEX].midr_el1=VALUE’
  5137. The value of the ‘midr_el1’ system register on the processor INDEX.
  5138. This line is only printed if the kernel indicates that this system
  5139. register is supported.
  5140. ‘aarch64.processor[INDEX].dczid_el0=VALUE’
  5141. The value of the ‘dczid_el0’ system register on the processor
  5142. INDEX.
  5143. ‘x86.cpu_features....’
  5144. These items are specific to the i386 and x86-64 architectures.
  5145. They reflect supported CPU features and information on cache
  5146. geometry, mostly collected using the CPUID instruction.
  5147. ‘x86.processor[INDEX]....’
  5148. These are additional items for the i386 and x86-64 architectures,
  5149. as described below. They mostly contain raw data from the CPUID
  5150. instruction. The probes are performed for each active CPU for the
  5151. ‘ld.so’ process, and data for different probed CPUs receives a
  5152. unique INDEX value. Some CPUID data is expected to differ from CPU
  5153. core to CPU core. In some cases, CPUs are not correctly
  5154. initialized and indicate the presence of different feature sets.
  5155. ‘x86.processor[INDEX].requested=KERNEL-CPU’
  5156. The kernel is told to run the subsequent probing on the CPU
  5157. numbered KERNEL-CPU. The values KERNEL-CPU and INDEX can be
  5158. distinct if there are gaps in the process CPU affinity mask. This
  5159. line is not included if CPU affinity mask information is not
  5160. available.
  5161. ‘x86.processor[INDEX].observed=KERNEL-CPU’
  5162. This line reports the kernel CPU number KERNEL-CPU on which the
  5163. probing code initially ran. If the CPU number cannot be obtained,
  5164. this line is not printed.
  5165. ‘x86.processor[INDEX].observed_node=NODE’
  5166. This reports the observed NUMA node number, as reported by the
  5167. ‘getcpu’ system call. If this information cannot be obtained, this
  5168. line is not printed.
  5169. ‘x86.processor[INDEX].cpuid_leaves=COUNT’
  5170. This line indicates that COUNT distinct CPUID leaves were
  5171. encountered. (This reflects internal ‘ld.so’ storage space, it
  5172. does not directly correspond to ‘CPUID’ enumeration ranges.)
  5173. ‘x86.processor[INDEX].ecx_limit=VALUE’
  5174. The CPUID data extraction code uses a brute-force approach to
  5175. enumerate subleaves (see the ‘.subleaf_eax’ lines below). The last
  5176. ‘%rcx’ value used in a CPUID query on this probed CPU was VALUE.
  5177. ‘x86.processor[INDEX].cpuid.eax[QUERY_EAX].eax=EAX’
  5178. ‘x86.processor[INDEX].cpuid.eax[QUERY_EAX].ebx=EBX’
  5179. ‘x86.processor[INDEX].cpuid.eax[QUERY_EAX].ecx=ECX’
  5180. ‘x86.processor[INDEX].cpuid.eax[QUERY_EAX].edx=EDX’
  5181. These lines report the register contents after executing the CPUID
  5182. instruction with ‘%rax == QUERY_EAX’ and ‘%rcx == 0’ (a “leaf”).
  5183. For the first probed CPU (with a zero INDEX), only leaves with
  5184. non-zero register contents are reported. For subsequent CPUs, only
  5185. leaves whose register contents differs from the previously probed
  5186. CPUs (with INDEX one less) are reported.
  5187. Basic and extended leaves are reported using the same syntax. This
  5188. means there is a large jump in QUERY_EAX for the first reported
  5189. extended leaf.
  5190. ‘x86.processor[INDEX].cpuid.subleaf_eax[QUERY_EAX].ecx[QUERY_ECX].eax=EAX’
  5191. ‘x86.processor[INDEX].cpuid.subleaf_eax[QUERY_EAX].ecx[QUERY_ECX].ebx=EBX’
  5192. ‘x86.processor[INDEX].cpuid.subleaf_eax[QUERY_EAX].ecx[QUERY_ECX].ecx=ECX’
  5193. ‘x86.processor[INDEX].cpuid.subleaf_eax[QUERY_EAX].ecx[QUERY_ECX].edx=EDX’
  5194. This is similar to the leaves above, but for a “subleaf”. For
  5195. subleaves, the CPUID instruction is executed with ‘%rax ==
  5196. QUERY_EAX’ and ‘%rcx == QUERY_ECX’, so the result depends on both
  5197. register values. The same rules about filtering zero and identical
  5198. results apply.
  5199. ‘x86.processor[INDEX].cpuid.subleaf_eax[QUERY_EAX].ecx[QUERY_ECX].until_ecx=ECX_LIMIT’
  5200. Some CPUID results are the same regardless the QUERY_ECX value. If
  5201. this situation is detected, a line with the ‘.until_ecx’ selector
  5202. ins included, and this indicates that the CPUID register contents
  5203. is the same for ‘%rcx’ values between QUERY_ECX and ECX_LIMIT
  5204. (inclusive).
  5205. ‘x86.processor[INDEX].cpuid.subleaf_eax[QUERY_EAX].ecx[QUERY_ECX].ecx_query_mask=0xff’
  5206. This line indicates that in an ‘.until_ecx’ range, the CPUID
  5207. instruction preserved the lowest 8 bits of the input ‘%rcx’ in the
  5208. output ‘%rcx’ registers. Otherwise, the subleaves in the range
  5209. have identical values. This special treatment is necessary to
  5210. report compact range information in case such copying occurs
  5211. (because the subleaves would otherwise be all different).
  5212. ‘x86.processor[INDEX].xgetbv.ecx[QUERY_ECX]=RESULT’
  5213. This line shows the 64-bit RESULT value in the ‘%rdx:%rax’ register
  5214. pair after executing the XGETBV instruction with ‘%rcx’ set to
  5215. QUERY_ECX. Zero values and values matching the previously probed
  5216. CPU are omitted. Nothing is printed if the system does not support
  5217. the XGETBV instruction.
  5218. 
  5219. File: libc.info, Node: Dynamic Linker Environment Variables, Next: Dynamic Linker Introspection, Prev: Dynamic Linker Invocation, Up: Dynamic Linker
  5220. 37.2 Dynamic Linker Environment Variables
  5221. =========================================
  5222. The behavior of the dynamic linker can be modified through various
  5223. environment variables.
  5224. ‘LD_DEBUG’
  5225. The ‘LD_DEBUG’ environment variable can be set to a comma-separated
  5226. list of keywords to enable debugging output from the dynamic
  5227. linker. Setting it to ‘help’ will display a list of all available
  5228. keywords. The output is written to standard output by default.
  5229. ‘libs’
  5230. Display library search paths.
  5231. ‘reloc’
  5232. Display relocation processing.
  5233. ‘files’
  5234. Display progress for input file processing.
  5235. ‘symbols’
  5236. Display symbol table processing.
  5237. ‘bindings’
  5238. Display information about symbol binding.
  5239. ‘versions’
  5240. Display version dependencies.
  5241. ‘scopes’
  5242. Display scope information.
  5243. ‘tls’
  5244. Display information about Thread-Local Storage (TLS) handling,
  5245. including TCB allocation, deallocation, and reuse. This is
  5246. useful for debugging issues related to thread creation and
  5247. lifecycle.
  5248. ‘security’
  5249. Display security warnings that are related to loading binaries
  5250. that lack certain target-dependent hardening features. This
  5251. may be useful for audit purposes.
  5252. ‘all’
  5253. All previous options combined.
  5254. ‘statistics’
  5255. Display relocation statistics.
  5256. ‘unused’
  5257. Determined unused DSOs.
  5258. ‘help’
  5259. Display a help message with all available options and exit.
  5260. ‘LD_DEBUG_OUTPUT’
  5261. If ‘LD_DEBUG’ is set, the output is written to standard output by
  5262. default. If ‘LD_DEBUG_OUTPUT’ is set, the output is written to the
  5263. file specified by its value, with the process ID appended. For
  5264. example, if ‘LD_DEBUG_OUTPUT’ is set to ‘/tmp/glibc.debug’, the
  5265. output will be written to a file named ‘/tmp/glibc.debug.12345’,
  5266. where ‘12345’ is the process ID.
  5267. 
  5268. File: libc.info, Node: Dynamic Linker Introspection, Next: Dynamic Linker Hardening, Prev: Dynamic Linker Environment Variables, Up: Dynamic Linker
  5269. 37.3 Dynamic Linker Introspection
  5270. =================================
  5271. The GNU C Library provides various facilities for querying information
  5272. from the dynamic linker.
  5273. -- Data Type: struct link_map
  5274. A “link map” is associated with the main executable and each shared
  5275. object. Some fields of the link map are accessible to applications
  5276. and exposed through the ‘struct link_map’. Applications must not
  5277. modify the link map directly.
  5278. Pointers to link maps can be obtained from the ‘_r_debug’ variable,
  5279. from the ‘RTLD_DI_LINKMAP’ request for ‘dlinfo’, and from the
  5280. ‘_dl_find_object’ function. See below for details.
  5281. ‘l_addr’
  5282. This field contains the “load address” of the object. This is
  5283. the offset that needs to be applied to unrelocated addresses
  5284. in the object image (as stored on disk) to form an address
  5285. that can be used at run time for accessing data or running
  5286. code. For position-dependent executables, the load address is
  5287. typically zero, and no adjustment is required. For
  5288. position-independent objects, the ‘l_addr’ field usually
  5289. contains the address of the object's ELF header in the process
  5290. image. However, this correspondence is not guaranteed because
  5291. the ELF header might not be mapped at all, and the ELF file as
  5292. stored on disk might use zero as the lowest virtual address.
  5293. Due to the second variable, values of the ‘l_addr’ field do
  5294. not necessarily uniquely identify a shared object.
  5295. On Linux, to obtain the lowest loaded address of the main
  5296. program, use ‘getauxval’ to obtain the ‘AT_PHDR’ and
  5297. ‘AT_PHNUM’ values for the current process. Alternatively,
  5298. call ‘dlinfo (_r_debug.r_map, &PHDR)’ to obtain the number of
  5299. program headers, and the address of the program header array
  5300. will be stored in PHDR (of type ‘const ElfW(Phdr) *’, as
  5301. explained below). These values allow processing the array of
  5302. program headers and the address information in the ‘PT_LOAD’
  5303. entries among them. This works even when the program was
  5304. started with an explicit loader invocation.
  5305. ‘l_name’
  5306. For a shared object, this field contains the file name that
  5307. the the GNU C Library dynamic loader used when opening the
  5308. object. This can be a relative path (relative to the current
  5309. directory at process start, or if the object was loaded later,
  5310. via ‘dlopen’ or ‘dlmopen’). Symbolic links are not
  5311. necessarily resolved.
  5312. For the main executable, ‘l_name’ is ‘""’ (the empty string).
  5313. (The main executable is not loaded by the GNU C Library, so
  5314. its file name is not available.) On Linux, the main
  5315. executable is available as ‘/proc/self/exe’ (unless an
  5316. explicit loader invocation was used to start the program).
  5317. The file name ‘/proc/self/exe’ continues to resolve to the
  5318. same file even if it is moved within or deleted from the file
  5319. system. Its current location can be read using ‘readlink’.
  5320. *Note Symbolic Links::. (Although ‘/proc/self/exe’ is not
  5321. actually a symbol link, it is only presented as one.) Note
  5322. that ‘/proc’ may not be mounted, in which case
  5323. ‘/proc/self/exe’ is not available.
  5324. If an explicit loader invocation is used (such as ‘ld.so
  5325. /usr/bin/emacs’), the ‘/proc/self/exe’ approach does not work
  5326. because the file name refers to the dynamic linker ‘ld.so’,
  5327. and not the ‘/usr/bin/emacs’ program. An approximation to the
  5328. executable path is still available in the ‘INFO.dli_fname’
  5329. member after calling ‘dladdr (_r_debug.r_map->l_ld, &INFO)’.
  5330. Note that this could be a relative path, and it is supplied by
  5331. the process that created the current process, not the kernel,
  5332. so it could be inaccurate.
  5333. ‘l_ld’
  5334. This is a pointer to the ELF dynamic segment, an array of
  5335. tag/value pairs that provide various pieces of information
  5336. that the dynamic linking process uses. On most architectures,
  5337. addresses in the dynamic segment are relocated at run time,
  5338. but on some architectures and in some run-time configurations,
  5339. it is necessary to add the ‘l_addr’ field value to obtain a
  5340. proper address.
  5341. ‘l_prev’
  5342. ‘l_next’
  5343. These fields are used to maintain a double-linked linked list
  5344. of all link maps within one ‘dlmopen’ namespace. Note that
  5345. there is currently no thread-safe way to iterate over this
  5346. list. The callback-based ‘dl_iterate_phdr’ interface can be
  5347. used instead.
  5348. *Portability note:* It is not possible to create a ‘struct link_map’
  5349. object and pass a pointer to a function that expects a ‘struct link_map
  5350. *’ argument. Only link map pointers initially supplied by the GNU C
  5351. Library are permitted as arguments. In current versions of the GNU C
  5352. Library, handles returned by ‘dlopen’ and ‘dlmopen’ are pointers to link
  5353. maps. However, this is not a portable assumption, and may even change
  5354. in future versions of the GNU C Library. To obtain the link map
  5355. associated with a handle, see ‘dlinfo’ and ‘RTLD_DI_LINKMAP’ below. If
  5356. a function accepts both ‘dlopen’/‘dlmopen’ handles and ‘struct link_map’
  5357. pointers in its ‘void *’ argument, that is documented explicitly.
  5358. 37.3.1 Querying information for loaded objects
  5359. ----------------------------------------------
  5360. The ‘dlinfo’ function provides access to internal information associated
  5361. with ‘dlopen’/‘dlmopen’ handles and link maps.
  5362. -- Function: int dlinfo (void *HANDLE, int REQUEST, void *ARG)
  5363. | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt | *Note POSIX
  5364. Safety Concepts::.
  5365. This function returns information about HANDLE in the memory
  5366. location ARG, based on REQUEST. The HANDLE argument must be a
  5367. pointer returned by ‘dlopen’ or ‘dlmopen’; it must not have been
  5368. closed by ‘dlclose’. Alternatively, HANDLE can be a ‘struct
  5369. link_map *’ value for a link map of an object that has not been
  5370. closed.
  5371. On success, ‘dlinfo’ returns 0 for most request types; exceptions
  5372. are noted below. If there is an error, the function returns -1,
  5373. and ‘dlerror’ can be used to obtain a corresponding error message.
  5374. The following operations are defined for use with REQUEST:
  5375. ‘RTLD_DI_LINKMAP’
  5376. The corresponding ‘struct link_map’ pointer for HANDLE is
  5377. written to ‘*ARG’. The ARG argument must be the address of an
  5378. object of type ‘struct link_map *’.
  5379. ‘RTLD_DI_LMID’
  5380. The namespace identifier of HANDLE is written to ‘*ARG’. The
  5381. ARG argument must be the address of an object of type
  5382. ‘Lmid_t’.
  5383. ‘RTLD_DI_ORIGIN’
  5384. The value of the ‘$ORIGIN’ dynamic string token for HANDLE is
  5385. written to the character array starting at ARG as a
  5386. null-terminated string.
  5387. This request type should not be used because it is prone to
  5388. buffer overflows.
  5389. ‘RTLD_DI_SERINFO’
  5390. ‘RTLD_DI_SERINFOSIZE’
  5391. These requests can be used to obtain search path information
  5392. for HANDLE. For both requests, ARG must point to a
  5393. ‘Dl_serinfo’ object. The ‘RTLD_DI_SERINFOSIZE’ request must
  5394. be made first; it updates the ‘dls_size’ and ‘dls_cnt’ members
  5395. of the ‘Dl_serinfo’ object. The caller should then allocate
  5396. memory to store at least ‘dls_size’ bytes and pass that buffer
  5397. to a ‘RTLD_DI_SERINFO’ request. This second request fills the
  5398. ‘dls_serpath’ array. The number of array elements was
  5399. returned in the ‘dls_cnt’ member in the initial
  5400. ‘RTLD_DI_SERINFOSIZE’ request. The caller is responsible for
  5401. freeing the allocated buffer.
  5402. This interface is prone to buffer overflows in multi-threaded
  5403. processes because the required size can change between the
  5404. ‘RTLD_DI_SERINFOSIZE’ and ‘RTLD_DI_SERINFO’ requests.
  5405. ‘RTLD_DI_TLS_DATA’
  5406. This request writes the address of the TLS block (in the
  5407. current thread) for the shared object identified by HANDLE to
  5408. ‘*ARG’. The argument ARG must be the address of an object of
  5409. type ‘void *’. A null pointer is written if the object does
  5410. not have any associated TLS block.
  5411. ‘RTLD_DI_TLS_MODID’
  5412. This request writes the TLS module ID for the shared object
  5413. HANDLE to ‘*ARG’. The argument ARG must be the address of an
  5414. object of type ‘size_t’. The module ID is zero if the object
  5415. does not have an associated TLS block.
  5416. ‘RTLD_DI_PHDR’
  5417. This request writes the address of the program header array to
  5418. ‘*ARG’. The argument ARG must be the address of an object of
  5419. type ‘const ElfW(Phdr) *’ (that is, ‘const Elf32_Phdr *’ or
  5420. ‘const Elf64_Phdr *’, as appropriate for the current
  5421. architecture). For this request, the value returned by
  5422. ‘dlinfo’ is the number of program headers in the program
  5423. header array.
  5424. The ‘dlinfo’ function is a GNU extension.
  5425. The remainder of this section documents the ‘_dl_find_object’
  5426. function and supporting types and constants.
  5427. -- Data Type: struct dl_find_object
  5428. This structure contains information about a main program or loaded
  5429. object. The ‘_dl_find_object’ function uses it to return result
  5430. data to the caller.
  5431. ‘unsigned long long int dlfo_flags’
  5432. Bit zero signals if SFrame stack data is valid. See
  5433. ‘DLFO_FLAG_SFRAME’ below.
  5434. ‘void *dlfo_map_start’
  5435. The start address of the inspected mapping. This information
  5436. comes from the program header, so it follows its convention,
  5437. and the address is not necessarily page-aligned.
  5438. ‘void *dlfo_map_end’
  5439. The end address of the mapping.
  5440. ‘struct link_map *dlfo_link_map’
  5441. This member contains a pointer to the link map of the object.
  5442. ‘void *dlfo_eh_frame’
  5443. This member contains a pointer to the exception handling data
  5444. of the object. See ‘DLFO_EH_SEGMENT_TYPE’ below.
  5445. ‘void *dlfo_sframe’
  5446. This member points to the SFrame stack trace data associated
  5447. with the object. It is valid only when ‘DLFO_FLAG_SFRAME’ is
  5448. set in ‘dlfo_flags’; otherwise, it may be null or undefined.
  5449. This structure is a GNU extension.
  5450. -- Macro: int DLFO_STRUCT_HAS_EH_DBASE
  5451. On most targets, this macro is defined as ‘0’. If it is defined to
  5452. ‘1’, ‘struct dl_find_object’ contains an additional member
  5453. ‘dlfo_eh_dbase’ of type ‘void *’. It is the base address for
  5454. ‘DW_EH_PE_datarel’ DWARF encodings to this location.
  5455. This macro is a GNU extension.
  5456. -- Macro: int DLFO_STRUCT_HAS_EH_COUNT
  5457. On most targets, this macro is defined as ‘0’. If it is defined to
  5458. ‘1’, ‘struct dl_find_object’ contains an additional member
  5459. ‘dlfo_eh_count’ of type ‘int’. It is the number of exception
  5460. handling entries in the EH frame segment identified by the
  5461. ‘dlfo_eh_frame’ member.
  5462. This macro is a GNU extension.
  5463. -- Macro: int DLFO_EH_SEGMENT_TYPE
  5464. On targets using DWARF-based exception unwinding, this macro
  5465. expands to ‘PT_GNU_EH_FRAME’. This indicates that ‘dlfo_eh_frame’
  5466. in ‘struct dl_find_object’ points to the ‘PT_GNU_EH_FRAME’ segment
  5467. of the object. On targets that use other unwinding formats, the
  5468. macro expands to the program header type for the unwinding data.
  5469. This macro is a GNU extension.
  5470. -- Function: int _dl_find_object (void *ADDRESS, struct dl_find_object
  5471. *RESULT)
  5472. | MT-Safe | AS-Safe | AC-Safe | *Note POSIX Safety Concepts::.
  5473. On success, this function returns 0 and writes about the object
  5474. surrounding the address to ‘*RESULT’. On failure, -1 is returned.
  5475. The ADDRESS can be a code address or data address. On
  5476. architectures using function descriptors, no attempt is made to
  5477. decode the function descriptor. Depending on how these descriptors
  5478. are implemented, ‘_dl_find_object’ may return the object that
  5479. defines the function descriptor (and not the object that contains
  5480. the code implementing the function), or fail to find any object at
  5481. all.
  5482. On success ADDRESS is greater than or equal to
  5483. ‘RESULT->dlfo_map_start’ and less than ‘RESULT->dlfo_map_end’, that
  5484. is, the supplied code address is located within the reported
  5485. mapping.
  5486. This function returns a pointer to the unwinding information for
  5487. the object that contains the program code ADDRESS in
  5488. ‘RESULT->dlfo_eh_frame’. If the platform uses DWARF unwinding
  5489. information, this is the in-memory address of the ‘PT_GNU_EH_FRAME’
  5490. segment. See ‘DLFO_EH_SEGMENT_TYPE’ above. In case ADDRESS
  5491. resides in an object that lacks unwinding information, the function
  5492. still returns 0, but sets ‘RESULT->dlfo_eh_frame’ to a null
  5493. pointer.
  5494. ‘_dl_find_object’ itself is thread-safe. However, if the
  5495. application invokes ‘dlclose’ for the object that contains ADDRESS
  5496. concurrently with ‘_dl_find_object’ or after the call returns,
  5497. accessing the unwinding data for that object or the link map
  5498. (through ‘RESULT->dlfo_link_map’) is not safe. Therefore, the
  5499. application needs to ensure by other means (e.g., by convention)
  5500. that ADDRESS remains a valid code address while the unwinding
  5501. information is processed.
  5502. This function is a GNU extension.
  5503. The following flag masks are defined for use with ‘dlfo_flags’:
  5504. ‘DLFO_FLAG_SFRAME’
  5505. A bit mask used to signal that the object contains SFrame data.
  5506. See ‘dlfo_sframe’ above.
  5507. 
  5508. File: libc.info, Node: Dynamic Linker Hardening, Prev: Dynamic Linker Introspection, Up: Dynamic Linker
  5509. 37.4 Avoiding Unexpected Issues With Dynamic Linking
  5510. ====================================================
  5511. This section details recommendations for increasing application
  5512. robustness, by avoiding potential issues related to dynamic linking.
  5513. The recommendations have two main aims: reduce the involvement of the
  5514. dynamic linker in application execution after process startup, and
  5515. restrict the application to a dynamic linker feature set whose behavior
  5516. is more easily understood.
  5517. Key aspects of limiting dynamic linker usage after startup are: no
  5518. use of the ‘dlopen’ function, disabling lazy binding, and using the
  5519. static TLS model. More easily understood dynamic linker behavior
  5520. requires avoiding name conflicts (symbols and sonames) and highly
  5521. customizable features like the audit subsystem.
  5522. Note that while these steps can be considered a form of application
  5523. hardening, they do not guard against potential harm from accidental or
  5524. deliberate loading of untrusted or malicious code. There is only
  5525. limited overlap with traditional security hardening for applications
  5526. running on GNU systems.
  5527. 37.4.1 Restricted Dynamic Linker Features
  5528. -----------------------------------------
  5529. Avoiding certain dynamic linker features can increase predictability of
  5530. applications and reduce the risk of running into dynamic linker defects.
  5531. • Do not use the functions ‘dlopen’, ‘dlmopen’, or ‘dlclose’.
  5532. Dynamic loading and unloading of shared objects introduces
  5533. substantial complications related to symbol and thread-local
  5534. storage (TLS) management.
  5535. • Without the ‘dlopen’ function, ‘dlsym’ and ‘dlvsym’ cannot be used
  5536. with shared object handles. Minimizing the use of both functions
  5537. is recommended. If they have to be used, only the ‘RTLD_DEFAULT’
  5538. pseudo-handle should be used.
  5539. • Use the local-exec or initial-exec TLS models. If ‘dlopen’ is not
  5540. used, there are no compatibility concerns for initial-exec TLS.
  5541. This TLS model avoids most of the complexity around TLS access. In
  5542. particular, there are no TLS-related run-time memory allocations
  5543. after process or thread start.
  5544. If shared objects are expected to be used more generally, outside
  5545. the hardened, feature-restricted context, lack of compatibility
  5546. between ‘dlopen’ and initial-exec TLS could be a concern. In that
  5547. case, the second-best alternative is to use global-dynamic TLS with
  5548. GNU2 TLS descriptors, for targets that fully implement them,
  5549. including the fast path for access to TLS variables defined in the
  5550. initially loaded set of objects. Like initial-exec TLS, this
  5551. avoids memory allocations after thread creation, but only if the
  5552. ‘dlopen’ function is not used.
  5553. • Do not use lazy binding. Lazy binding may require run-time memory
  5554. allocation, is not async-signal-safe, and introduces considerable
  5555. complexity.
  5556. • Make dependencies on shared objects explicit. Do not assume that
  5557. certain libraries (such as ‘libc.so.6’) are always loaded.
  5558. Specifically, if a main program or shared object references a
  5559. symbol, create an ELF ‘DT_NEEDED’ dependency on that shared object,
  5560. or on another shared object that is documented (or otherwise
  5561. guaranteed) to have the required explicit dependency. Referencing
  5562. a symbol without a matching link dependency results in
  5563. underlinking, and underlinked objects cannot always be loaded
  5564. correctly: Initialization of objects may not happen in the required
  5565. order.
  5566. • Do not create dependency loops between shared objects (‘libA.so.1’
  5567. depending on ‘libB.so.1’ depending on ‘libC.so.1’ depending on
  5568. ‘libA.so.1’). The GNU C Library has to initialize one of the
  5569. objects in the cycle first, and the choice of that object is
  5570. arbitrary and can change over time. The object which is
  5571. initialized first (and other objects involved in the cycle) may not
  5572. run correctly because not all of its dependencies have been
  5573. initialized.
  5574. Underlinking (see above) can hide the presence of cycles.
  5575. • Limit the creation of indirect function (IFUNC) resolvers. These
  5576. resolvers run during relocation processing, when the GNU C Library
  5577. is not in a fully consistent state. If you write your own IFUNC
  5578. resolvers, do not depend on external data or function references in
  5579. those resolvers.
  5580. • Do not use the audit functionality (‘LD_AUDIT’, ‘DT_AUDIT’,
  5581. ‘DT_DEPAUDIT’). Its callback and hooking capabilities introduce a
  5582. lot of complexity and subtly alter dynamic linker behavior in
  5583. corner cases even if the audit module is inactive.
  5584. • Do not use symbol interposition. Without symbol interposition, the
  5585. exact order in which shared objects are searched are less relevant.
  5586. Exceptions to this rule are copy relocations (see the next item),
  5587. and vague linkage, as used by the C++ implementation (see below).
  5588. • One potential source of symbol interposition is a combination of
  5589. static and dynamic linking, namely linking a static archive into
  5590. multiple dynamic shared objects. For such scenarios, the static
  5591. library should be converted into its own dynamic shared object.
  5592. A different approach to this situation uses hidden visibility for
  5593. symbols in the static library, but this can cause problems if the
  5594. library does not expect that multiple copies of its code coexist
  5595. within the same process, with no or partial sharing of state.
  5596. • If you use shared objects that are linked with ‘-Wl,-Bsymbolic’ (or
  5597. equivalent) or use protected visibility, the code for the main
  5598. program must be built as ‘-fpic’ or ‘-fPIC’ to avoid creating copy
  5599. relocations (and the main program must not use copy relocations for
  5600. other reasons). Using ‘-fpie’ or ‘-fPIE’ is not an alternative to
  5601. PIC code in this context.
  5602. • Be careful about explicit section annotations. Make sure that the
  5603. target section matches the properties of the declared entity (e.g.,
  5604. no writable objects in ‘.text’).
  5605. • Ensure that all assembler or object input files have the
  5606. recommended security markup, particularly for non-executable stack.
  5607. • Avoid using non-default linker flags and features. In particular,
  5608. do not use the ‘DT_PREINIT_ARRAY’ dynamic tag, and do not flag
  5609. objects as ‘DF_1_INITFIRST’. Do not change the default linker
  5610. script of BFD ld. Do not override ABI defaults, such as the
  5611. dynamic linker path (with ‘--dynamic-linker’).
  5612. • Some features of the GNU C Library indirectly depend on run-time
  5613. code loading and ‘dlopen’. Use ‘iconv_open’ with built-in
  5614. converters only (such as ‘UTF-8’). Do not use NSS functionality
  5615. such as ‘getaddrinfo’ or ‘getpwuid_r’ unless the system is
  5616. configured for built-in NSS service modules only (see below).
  5617. Several considerations apply to ELF constructors and destructors.
  5618. • The dynamic linker does not take constructor and destructor
  5619. priorities into account when determining their execution order.
  5620. Priorities are only used by the link editor for ordering execution
  5621. within a completely linked object. If a dynamic shared object
  5622. needs to be initialized before another object, this can be
  5623. expressed with a ‘DT_NEEDED’ dependency on the object that needs to
  5624. be initialized earlier.
  5625. • The recommendations to avoid cyclic dependencies and symbol
  5626. interposition make it less likely that ELF objects are accessed
  5627. before their ELF constructors have run. However, using ‘dlsym’ and
  5628. ‘dlvsym’, it is still possible to access uninitialized facilities
  5629. even with these restrictions in place. (Of course, access to
  5630. uninitialized functionality is also possible within a single shared
  5631. object or the main executable, without resorting to explicit symbol
  5632. lookup.) Consider using dynamic, on-demand initialization instead.
  5633. To deal with access after de-initialization, it may be necessary to
  5634. implement special cases for that scenario, potentially with
  5635. degraded functionality.
  5636. • Be aware that when ELF destructors are executed, it is possible to
  5637. reference already-deconstructed shared objects. This can happen
  5638. even in the absence of ‘dlsym’ and ‘dlvsym’ function calls, for
  5639. example if client code using a shared object has registered
  5640. callbacks or objects with another shared object. The ELF
  5641. destructor for the client code is executed before the ELF
  5642. destructor for the shared objects that it uses, based on the
  5643. expected dependency order.
  5644. • If ‘dlopen’ and ‘dlmopen’ are not used, ‘DT_NEEDED’ dependency
  5645. information is complete, and lazy binding is disabled, the
  5646. execution order of ELF destructors is expected to be the reverse of
  5647. the ELF constructor order. However, two separate dependency sort
  5648. operations still occur. Even though the listed preconditions
  5649. should ensure that both sorts produce the same ordering, it is
  5650. recommended not to depend on the destructor order being the reverse
  5651. of the constructor order.
  5652. The following items provide C++-specific guidance for preparing
  5653. applications. If another programming language is used and it uses these
  5654. toolchain features targeted at C++ to implement some language
  5655. constructs, these restrictions and recommendations still apply in
  5656. analogous ways.
  5657. • C++ inline functions, templates, and other constructs may need to
  5658. be duplicated into multiple shared objects using vague linkage,
  5659. resulting in symbol interposition. This type of symbol
  5660. interposition is unproblematic, as long as the C++ one definition
  5661. rule (ODR) is followed, and all definitions in different
  5662. translation units are equivalent according to the language C++
  5663. rules.
  5664. • Be aware that under C++ language rules, it is unspecified whether
  5665. evaluating a string literal results in the same address for each
  5666. evaluation. This also applies to anonymous objects of static
  5667. storage duration that GCC creates, for example to implement the
  5668. compound literals C++ extension. As a result, comparing pointers
  5669. to such objects, or using them directly as hash table keys, may
  5670. give unexpected results.
  5671. By default, variables of block scope of static storage have
  5672. consistent addresses across different translation units, even if
  5673. defined in functions that use vague linkage.
  5674. • Special care is needed if a C++ project uses symbol visibility or
  5675. symbol version management (for example, the GCC ‘visibility’
  5676. attribute, the GCC ‘-fvisibility’ option, or a linker version
  5677. script with the linker option ‘--version-script’). It is necessary
  5678. to ensure that the symbol management remains consistent with how
  5679. the symbols are used. Some C++ constructs are implemented with the
  5680. help of ancillary symbols, which can make complicated to achieve
  5681. consistency. For example, an inline function that is always
  5682. inlined into its callers has no symbol footprint for the function
  5683. itself, but if the function contains a variable of static storage
  5684. duration, this variable may result in the creation of one or more
  5685. global symbols. For correctness, such symbols must be visible and
  5686. bound to the same object in all other places where the inline
  5687. function may be called. This requirement is not met if the symbol
  5688. visibility is set to hidden, or if symbols are assigned a textually
  5689. different symbol version (effectively creating two distinct
  5690. symbols).
  5691. Due to the complex interaction between ELF symbol management and
  5692. C++ symbol generation, it is recommended to use C++ language
  5693. features for symbol management, in particular inline namespaces.
  5694. • The toolchain and dynamic linker have multiple mechanisms that
  5695. bypass the usual symbol binding procedures. This means that the
  5696. C++ one definition rule (ODR) still holds even if certain
  5697. symbol-based isolation mechanisms are used, and object addresses
  5698. are not shared across translation units with incompatible type
  5699. definitions.
  5700. This does not matter if the original (language-independent) advice
  5701. regarding symbol interposition is followed. However, as the advice
  5702. may be difficult to implement for C++ applications, it is
  5703. recommended to avoid ODR violations across the entire process
  5704. image. Inline namespaces can be helpful in this context because
  5705. they can be used to create distinct ELF symbols while maintaining
  5706. source code compatibility at the C++ level.
  5707. • Be aware that as a special case of interposed symbols, symbols with
  5708. the ‘STB_GNU_UNIQUE’ binding type do not follow the usual ELF
  5709. symbol namespace isolation rules: such symbols bind across
  5710. ‘RTLD_LOCAL’ boundaries. Furthermore, symbol versioning is ignored
  5711. for such symbols; they are bound by symbol name only. All their
  5712. definitions and uses must therefore be compatible. Hidden
  5713. visibility still prevents the creation of ‘STB_GNU_UNIQUE’ symbols
  5714. and can achieve isolation of incompatible definitions.
  5715. • C++ constructor priorities only affect constructor ordering within
  5716. one shared object. Global constructor order across shared objects
  5717. is consistent with ELF dependency ordering if there are no ELF
  5718. dependency cycles.
  5719. • C++ exception handling and run-time type information (RTTI), as
  5720. implemented in the GNU toolchain, is not address-significant, and
  5721. therefore is not affected by the symbol binding behaviour of the
  5722. dynamic linker. This means that types of the same fully-qualified
  5723. name (in non-anonymous namespaces) are always considered the same
  5724. from an exception-handling or RTTI perspective. This is true even
  5725. if the type information object or vtable has hidden symbol
  5726. visibility, or the corresponding symbols are versioned under
  5727. different symbol versions, or the symbols are not bound to the same
  5728. objects due to the use of ‘RTLD_LOCAL’ or ‘dlmopen’.
  5729. This can cause issues in applications that contain multiple
  5730. incompatible definitions of the same type. Inline namespaces can
  5731. be used to create distinct symbols at the ELF layer, avoiding this
  5732. type of issue.
  5733. • C++ exception handling across multiple ‘dlmopen’ namespaces may not
  5734. work, particular with the unwinder in GCC versions before 12.
  5735. Current toolchain versions are able to process unwinding tables
  5736. across ‘dlmopen’ boundaries. However, note that type comparison is
  5737. name-based, not address-based (see the previous item), so exception
  5738. types may still be matched in unexpected ways. An important
  5739. special case of exception handling, invoking destructors for
  5740. variables of block scope, is not impacted by this RTTI
  5741. type-sharing. Likewise, regular virtual member function dispatch
  5742. for objects is unaffected (but still requires that the type
  5743. definitions match in all directly involved translation units).
  5744. Once more, inline namespaces can be used to create distinct ELF
  5745. symbols for different types.
  5746. • Although the C++ standard requires that destructors for global
  5747. objects run in the opposite order of their constructors, the
  5748. Itanium C++ ABI requires a different destruction order in some
  5749. cases. As a result, do not depend on the precise destructor
  5750. invocation order in applications that use ‘dlclose’.
  5751. • Registering destructors for later invocation allocates memory and
  5752. may silently fail if insufficient memory is available. As a
  5753. result, the destructor is never invoked. This applies to all forms
  5754. of destructor registration, with the exception of thread-local
  5755. variables (see the next item). To avoid this issue, ensure that
  5756. such objects merely have trivial destructors, avoiding the need for
  5757. registration, and deallocate resources using a different mechanism
  5758. (for example, from an ELF destructor).
  5759. • A similar issue exists for ‘thread_local’ variables with thread
  5760. storage duration of types that have non-trivial destructors.
  5761. However, in this case, memory allocation failure during
  5762. registration leads to process termination. If process termination
  5763. is not acceptable, use ‘thread_local’ variables with trivial
  5764. destructors only. Functions for per-thread cleanup can be
  5765. registered using ‘pthread_key_create’ (globally for all threads)
  5766. and activated using ‘pthread_setspecific’ (on each thread). Note
  5767. that a ‘pthread_key_create’ call may still fail (and
  5768. ‘pthread_create’ keys are a limited resource in the GNU C Library),
  5769. but this failure can be handled without terminating the process.
  5770. 37.4.2 Producing Matching Binaries
  5771. ----------------------------------
  5772. This subsection recommends tools and build flags for producing
  5773. applications that meet the recommendations of the previous subsection.
  5774. • Use BFD ld (‘bfd.ld’) from GNU binutils to produce binaries,
  5775. invoked through a compiler driver such as ‘gcc’. The version
  5776. should be not too far ahead of what was current when the version of
  5777. the GNU C Library was first released.
  5778. • Do not use a binutils release that is older than the one used to
  5779. build the GNU C Library itself.
  5780. • Compile with ‘-ftls-model=initial-exec’ to force the initial-exec
  5781. TLS model.
  5782. • Link with ‘-Wl,-z,now’ to disable lazy binding.
  5783. • Link with ‘-Wl,-z,relro’ to enable RELRO (which is the default on
  5784. most targets).
  5785. • Specify all direct shared objects dependencies using ‘-l’ options
  5786. to avoid underlinking. Rely on ‘.so’ files (which can be linker
  5787. scripts) and searching with the ‘-l’ option. Do not specify the
  5788. file names of shared objects on the linker command line.
  5789. • Consider using ‘-Wl,-z,defs’ to treat underlinking as an error
  5790. condition.
  5791. • When creating a shared object (linked with ‘-shared’), use
  5792. ‘-Wl,-soname,lib...’ to set a soname that matches the final
  5793. installed name of the file.
  5794. • Do not use the ‘-rpath’ linker option. (As explained below, all
  5795. required shared objects should be installed into the default search
  5796. path.)
  5797. • Use ‘-Wl,--error-rwx-segments’ and ‘-Wl,--error-execstack’ to
  5798. instruct the link editor to fail the link if the resulting final
  5799. object would have read-write-execute segments or an executable
  5800. stack. Such issues usually indicate that the input files are not
  5801. marked up correctly.
  5802. • Ensure that for each ‘LOAD’ segment in the ELF program header, file
  5803. offsets, memory sizes, and load addresses are multiples of the
  5804. largest page size supported at run time. Similarly, the start
  5805. address and size of the ‘GNU_RELRO’ range should be multiples of
  5806. the page size.
  5807. Avoid creating gaps between ‘LOAD’ segments. The difference
  5808. between the load addresses of two subsequent ‘LOAD’ segments should
  5809. be the size of the first ‘LOAD’ segment. (This may require linking
  5810. with ‘-Wl,-z,noseparate-code’.)
  5811. This may not be possible to achieve with the currently available
  5812. link editors.
  5813. • If the multiple-of-page-size criterion for the ‘GNU_RELRO’ region
  5814. cannot be achieved, ensure that the process memory image right
  5815. before the start of the region does not contain executable or
  5816. writable memory.
  5817. 37.4.3 Checking Binaries
  5818. ------------------------
  5819. In some cases, if the previous recommendations are not followed, this
  5820. can be determined from the produced binaries. This section contains
  5821. suggestions for verifying aspects of these binaries.
  5822. • To detect underlinking, examine the dynamic symbol table, for
  5823. example using ‘readelf -sDW’. If the symbol is defined in a shared
  5824. object that uses symbol versioning, it must carry a symbol version,
  5825. as in ‘pthread_kill@GLIBC_2.34’.
  5826. • Examine the dynamic segment with ‘readelf -dW’ to check that all
  5827. the required ‘NEEDED’ entries are present. (It is not necessary to
  5828. list indirect dependencies if these dependencies are guaranteed to
  5829. remain during the evolution of the explicitly listed direct
  5830. dependencies.)
  5831. • The ‘NEEDED’ entries should not contain full path names including
  5832. slashes, only ‘sonames’.
  5833. • For a further consistency check, collect all shared objects
  5834. referenced via ‘NEEDED’ entries in dynamic segments, transitively,
  5835. starting at the main program. Then determine their dynamic symbol
  5836. tables (using ‘readelf -sDW’, for example). Ideally, every symbol
  5837. should be defined at most once, so that symbol interposition does
  5838. not happen.
  5839. If there are interposed data symbols, check if the single
  5840. interposing definition is in the main program. In this case, there
  5841. must be a copy relocation for it. (This only applies to targets
  5842. with copy relocations.)
  5843. Function symbols should only be interposed in C++ applications, to
  5844. implement vague linkage. (See the discussion in the C++
  5845. recommendations above.)
  5846. • Using the previously collected ‘NEEDED’ entries, check that the
  5847. dependency graph does not contain any cycles.
  5848. • The dynamic segment should also mention ‘BIND_NOW’ on the ‘FLAGS’
  5849. line or ‘NOW’ on the ‘FLAGS_1’ line (one is enough).
  5850. • Ensure that only static TLS relocations (thread-pointer relative
  5851. offset locations) are used, for example ‘R_AARCH64_TLS_TPREL’ and
  5852. ‘X86_64_TPOFF64’. As the second-best option, and only if
  5853. compatibility with non-hardened applications using ‘dlopen’ is
  5854. needed, GNU2 TLS descriptor relocations can be used (for example,
  5855. ‘R_AARCH64_TLSDESC’ or ‘R_X86_64_TLSDESC’).
  5856. • There should not be references to the traditional TLS function
  5857. symbols ‘__tls_get_addr’, ‘__tls_get_offset’, ‘__tls_get_addr_opt’
  5858. in the dynamic symbol table (in the ‘readelf -sDW’ output).
  5859. Supporting global dynamic TLS relocations (such as
  5860. ‘R_AARCH64_TLS_DTPMOD’, ‘R_AARCH64_TLS_DTPREL’,
  5861. ‘R_X86_64_DTPMOD64’, ‘R_X86_64_DTPOFF64’) should not be used,
  5862. either.
  5863. • Likewise, the functions ‘dlopen’, ‘dlmopen’, ‘dlclose’ should not
  5864. be referenced from the dynamic symbol table.
  5865. • For shared objects, there should be a ‘SONAME’ entry that matches
  5866. the file name (the base name, i.e., the part after the slash). The
  5867. ‘SONAME’ string must not contain a slash ‘/’.
  5868. • For all objects, the dynamic segment (as shown by ‘readelf -dW’)
  5869. should not contain ‘RPATH’ or ‘RUNPATH’ entries.
  5870. • Likewise, the dynamic segment should not show any ‘AUDIT’,
  5871. ‘DEPAUDIT’, ‘AUXILIARY’, ‘FILTER’, or ‘PREINIT_ARRAY’ tags.
  5872. • If the dynamic segment contains a (deprecated) ‘HASH’ tag, it must
  5873. also contain a ‘GNU_HASH’ tag.
  5874. • The ‘INITFIRST’ flag (under ‘FLAGS_1’) should not be used.
  5875. • The program header must not have ‘LOAD’ segments that are writable
  5876. and executable at the same time.
  5877. • All produced objects should have a ‘GNU_STACK’ program header that
  5878. is not marked as executable. (However, on some newer targets, a
  5879. non-executable stack is the default, so the ‘GNU_STACK’ program
  5880. header is not required.)
  5881. 37.4.4 Run-time Considerations
  5882. ------------------------------
  5883. In addition to preparing program binaries in a recommended fashion, the
  5884. run-time environment should be set up in such a way that problematic
  5885. dynamic linker features are not used.
  5886. • Install shared objects using their sonames in a default search path
  5887. directory (usually ‘/usr/lib64’). Do not use symbolic links.
  5888. • The default search path must not contain objects with duplicate
  5889. file names or sonames.
  5890. • Do not use environment variables (‘LD_...’ variables such as
  5891. ‘LD_PRELOAD’ or ‘LD_LIBRARY_PATH’, or ‘GLIBC_TUNABLES’) to change
  5892. default dynamic linker behavior.
  5893. • Do not install shared objects in non-default locations. (Such
  5894. locations are listed explicitly in the configuration file for
  5895. ‘ldconfig’, usually ‘/etc/ld.so.conf’, or in files included from
  5896. there.)
  5897. • In relation to the previous item, do not install any objects it
  5898. ‘glibc-hwcaps’ subdirectories.
  5899. • Do not configure dynamically-loaded NSS service modules, to avoid
  5900. accidental internal use of the ‘dlopen’ facility. The ‘files’ and
  5901. ‘dns’ modules are built in and do not rely on ‘dlopen’.
  5902. • Do not truncate and overwrite files containing programs and shared
  5903. objects in place, while they are used. Instead, write the new
  5904. version to a different path and use ‘rename’ to replace the
  5905. already-installed version.
  5906. • Be aware that during a component update procedure that involves
  5907. multiple object files (shared objects and main programs),
  5908. concurrently starting processes may observe an inconsistent
  5909. combination of object files (some already updated, some still at
  5910. the previous version). For example, this can happen during an
  5911. update of the GNU C Library itself.
  5912. 
  5913. File: libc.info, Node: Internal Probes, Next: Tunables, Prev: Dynamic Linker, Up: Top
  5914. 38 Internal probes
  5915. ******************
  5916. In order to aid in debugging and monitoring internal behavior, the GNU C
  5917. Library exposes nearly-zero-overhead SystemTap probes marked with the
  5918. ‘libc’ provider.
  5919. These probes are not part of the GNU C Library stable ABI, and they
  5920. are subject to change or removal across releases. Our only promise with
  5921. regard to them is that, if we find a need to remove or modify the
  5922. arguments of a probe, the modified probe will have a different name, so
  5923. that program monitors relying on the old probe will not get unexpected
  5924. arguments.
  5925. * Menu:
  5926. * Memory Allocation Probes:: Probes in the memory allocation subsystem
  5927. * Non-local Goto Probes:: Probes in setjmp and longjmp
  5928. 
  5929. File: libc.info, Node: Memory Allocation Probes, Next: Non-local Goto Probes, Up: Internal Probes
  5930. 38.1 Memory Allocation Probes
  5931. =============================
  5932. These probes are designed to signal relatively unusual situations within
  5933. the virtual memory subsystem of the GNU C Library.
  5934. -- Probe: memory_sbrk_more (void *$ARG1, size_t $ARG2)
  5935. This probe is triggered after the main arena is extended by calling
  5936. ‘sbrk’. Argument $ARG1 is the additional size requested to ‘sbrk’,
  5937. and $ARG2 is the pointer that marks the end of the ‘sbrk’ area,
  5938. returned in response to the request.
  5939. -- Probe: memory_sbrk_less (void *$ARG1, size_t $ARG2)
  5940. This probe is triggered after the size of the main arena is
  5941. decreased by calling ‘sbrk’. Argument $ARG1 is the size released
  5942. by ‘sbrk’ (the positive value, rather than the negative value
  5943. passed to ‘sbrk’), and $ARG2 is the pointer that marks the end of
  5944. the ‘sbrk’ area, returned in response to the request.
  5945. -- Probe: memory_heap_new (void *$ARG1, size_t $ARG2)
  5946. This probe is triggered after a new heap is ‘mmap’ed. Argument
  5947. $ARG1 is a pointer to the base of the memory area, where the
  5948. ‘heap_info’ data structure is held, and $ARG2 is the size of the
  5949. heap.
  5950. -- Probe: memory_heap_free (void *$ARG1, size_t $ARG2)
  5951. This probe is triggered _before_ (unlike the other sbrk and heap
  5952. probes) a heap is completely removed via ‘munmap’. Argument $ARG1
  5953. is a pointer to the heap, and $ARG2 is the size of the heap.
  5954. -- Probe: memory_heap_more (void *$ARG1, size_t $ARG2)
  5955. This probe is triggered after a trailing portion of an ‘mmap’ed
  5956. heap is extended. Argument $ARG1 is a pointer to the heap, and
  5957. $ARG2 is the new size of the heap.
  5958. -- Probe: memory_heap_less (void *$ARG1, size_t $ARG2)
  5959. This probe is triggered after a trailing portion of an ‘mmap’ed
  5960. heap is released. Argument $ARG1 is a pointer to the heap, and
  5961. $ARG2 is the new size of the heap.
  5962. -- Probe: memory_malloc_retry (size_t $ARG1)
  5963. -- Probe: memory_realloc_retry (size_t $ARG1, void *$ARG2)
  5964. -- Probe: memory_memalign_retry (size_t $ARG1, size_t $ARG2)
  5965. -- Probe: memory_calloc_retry (size_t $ARG1)
  5966. These probes are triggered when the corresponding functions fail to
  5967. obtain the requested amount of memory from the arena in use, before
  5968. they call ‘arena_get_retry’ to select an alternate arena in which
  5969. to retry the allocation. Argument $ARG1 is the amount of memory
  5970. requested by the user; in the ‘calloc’ case, that is the total size
  5971. computed from both function arguments. In the ‘realloc’ case,
  5972. $ARG2 is the pointer to the memory area being resized. In the
  5973. ‘memalign’ case, $ARG2 is the alignment to be used for the request,
  5974. which may be stricter than the value passed to the ‘memalign’
  5975. function. A ‘memalign’ probe is also used by functions
  5976. ‘posix_memalign, valloc’ and ‘pvalloc’.
  5977. Note that the argument order does _not_ match that of the
  5978. corresponding two-argument functions, so that in all of these
  5979. probes the user-requested allocation size is in $ARG1.
  5980. -- Probe: memory_arena_retry (size_t $ARG1, void *$ARG2)
  5981. This probe is triggered within ‘arena_get_retry’ (the function
  5982. called to select the alternate arena in which to retry an
  5983. allocation that failed on the first attempt), before the selection
  5984. of an alternate arena. This probe is redundant, but much easier to
  5985. use when it's not important to determine which of the various
  5986. memory allocation functions is failing to allocate on the first
  5987. try. Argument $ARG1 is the same as in the function-specific
  5988. probes, except for extra room for padding introduced by functions
  5989. that have to ensure stricter alignment. Argument $ARG2 is the
  5990. arena in which allocation failed.
  5991. -- Probe: memory_arena_new (void *$ARG1, size_t $ARG2)
  5992. This probe is triggered when ‘malloc’ allocates and initializes an
  5993. additional arena (not the main arena), but before the arena is
  5994. assigned to the running thread or inserted into the internal linked
  5995. list of arenas. The arena's ‘malloc_state’ internal data structure
  5996. is located at $ARG1, within a newly-allocated heap big enough to
  5997. hold at least $ARG2 bytes.
  5998. -- Probe: memory_arena_reuse (void *$ARG1, void *$ARG2)
  5999. This probe is triggered when ‘malloc’ has just selected an existing
  6000. arena to reuse, and (temporarily) reserved it for exclusive use.
  6001. Argument $ARG1 is a pointer to the newly-selected arena, and $ARG2
  6002. is a pointer to the arena previously used by that thread.
  6003. This occurs within ‘reused_arena’, right after the mutex mentioned
  6004. in probe ‘memory_arena_reuse_wait’ is acquired; argument $ARG1 will
  6005. point to the same arena. In this configuration, this will usually
  6006. only occur once per thread. The exception is when a thread first
  6007. selected the main arena, but a subsequent allocation from it fails:
  6008. then, and only then, may we switch to another arena to retry that
  6009. allocation, and for further allocations within that thread.
  6010. -- Probe: memory_arena_reuse_wait (void *$ARG1, void *$ARG2, void
  6011. *$ARG3)
  6012. This probe is triggered when ‘malloc’ is about to wait for an arena
  6013. to become available for reuse. Argument $ARG1 holds a pointer to
  6014. the mutex the thread is going to wait on, $ARG2 is a pointer to a
  6015. newly-chosen arena to be reused, and $ARG3 is a pointer to the
  6016. arena previously used by that thread.
  6017. This occurs within ‘reused_arena’, when a thread first tries to
  6018. allocate memory or needs a retry after a failure to allocate from
  6019. the main arena, there isn't any free arena, the maximum number of
  6020. arenas has been reached, and an existing arena was chosen for
  6021. reuse, but its mutex could not be immediately acquired. The mutex
  6022. in $ARG1 is the mutex of the selected arena.
  6023. -- Probe: memory_arena_reuse_free_list (void *$ARG1)
  6024. This probe is triggered when ‘malloc’ has chosen an arena that is
  6025. in the free list for use by a thread, within the ‘get_free_list’
  6026. function. The argument $ARG1 holds a pointer to the selected
  6027. arena.
  6028. -- Probe: memory_mallopt (int $ARG1, int $ARG2)
  6029. This probe is triggered when function ‘mallopt’ is called to change
  6030. ‘malloc’ internal configuration parameters, before any change to
  6031. the parameters is made. The arguments $ARG1 and $ARG2 are the ones
  6032. passed to the ‘mallopt’ function.
  6033. -- Probe: memory_mallopt_mxfast (int $ARG1, int $ARG2)
  6034. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6035. when the parameter to be changed is ‘M_MXFAST’, and the requested
  6036. value is in an acceptable range. Argument $ARG1 is the requested
  6037. value, and $ARG2 is the previous value of this ‘malloc’ parameter.
  6038. -- Probe: memory_mallopt_trim_threshold (int $ARG1, int $ARG2, int
  6039. $ARG3)
  6040. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6041. when the parameter to be changed is ‘M_TRIM_THRESHOLD’. Argument
  6042. $ARG1 is the requested value, $ARG2 is the previous value of this
  6043. ‘malloc’ parameter, and $ARG3 is nonzero if dynamic threshold
  6044. adjustment was already disabled.
  6045. -- Probe: memory_mallopt_top_pad (int $ARG1, int $ARG2, int $ARG3)
  6046. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6047. when the parameter to be changed is ‘M_TOP_PAD’. Argument $ARG1 is
  6048. the requested value, $ARG2 is the previous value of this ‘malloc’
  6049. parameter, and $ARG3 is nonzero if dynamic threshold adjustment was
  6050. already disabled.
  6051. -- Probe: memory_mallopt_mmap_threshold (int $ARG1, int $ARG2, int
  6052. $ARG3)
  6053. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6054. when the parameter to be changed is ‘M_MMAP_THRESHOLD’, and the
  6055. requested value is in an acceptable range. Argument $ARG1 is the
  6056. requested value, $ARG2 is the previous value of this ‘malloc’
  6057. parameter, and $ARG3 is nonzero if dynamic threshold adjustment was
  6058. already disabled.
  6059. -- Probe: memory_mallopt_mmap_max (int $ARG1, int $ARG2, int $ARG3)
  6060. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6061. when the parameter to be changed is ‘M_MMAP_MAX’. Argument $ARG1
  6062. is the requested value, $ARG2 is the previous value of this
  6063. ‘malloc’ parameter, and $ARG3 is nonzero if dynamic threshold
  6064. adjustment was already disabled.
  6065. -- Probe: memory_mallopt_perturb (int $ARG1, int $ARG2)
  6066. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6067. when the parameter to be changed is ‘M_PERTURB’. Argument $ARG1 is
  6068. the requested value, and $ARG2 is the previous value of this
  6069. ‘malloc’ parameter.
  6070. -- Probe: memory_mallopt_arena_test (int $ARG1, int $ARG2)
  6071. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6072. when the parameter to be changed is ‘M_ARENA_TEST’, and the
  6073. requested value is in an acceptable range. Argument $ARG1 is the
  6074. requested value, and $ARG2 is the previous value of this ‘malloc’
  6075. parameter.
  6076. -- Probe: memory_mallopt_arena_max (int $ARG1, int $ARG2)
  6077. This probe is triggered shortly after the ‘memory_mallopt’ probe,
  6078. when the parameter to be changed is ‘M_ARENA_MAX’, and the
  6079. requested value is in an acceptable range. Argument $ARG1 is the
  6080. requested value, and $ARG2 is the previous value of this ‘malloc’
  6081. parameter.
  6082. -- Probe: memory_mallopt_free_dyn_thresholds (int $ARG1, int $ARG2)
  6083. This probe is triggered when function ‘free’ decides to adjust the
  6084. dynamic brk/mmap thresholds. Argument $ARG1 and $ARG2 are the
  6085. adjusted mmap and trim thresholds, respectively.
  6086. -- Probe: memory_tunable_tcache_max_bytes (int $ARG1, int $ARG2)
  6087. This probe is triggered when the ‘glibc.malloc.tcache_max’ tunable
  6088. is set. Argument $ARG1 is the requested value, and $ARG2 is the
  6089. previous value of this tunable.
  6090. -- Probe: memory_tunable_tcache_count (int $ARG1, int $ARG2)
  6091. This probe is triggered when the ‘glibc.malloc.tcache_count’
  6092. tunable is set. Argument $ARG1 is the requested value, and $ARG2
  6093. is the previous value of this tunable.
  6094. -- Probe: memory_tunable_tcache_unsorted_limit (int $ARG1, int $ARG2)
  6095. This probe is triggered when the
  6096. ‘glibc.malloc.tcache_unsorted_limit’ tunable is set. Argument
  6097. $ARG1 is the requested value, and $ARG2 is the previous value of
  6098. this tunable.
  6099. -- Probe: memory_tcache_double_free (void *$ARG1, int $ARG2)
  6100. This probe is triggered when ‘free’ determines that the memory
  6101. being freed has probably already been freed, and resides in the
  6102. per-thread cache. Note that there is an extremely unlikely chance
  6103. that this probe will trigger due to random payload data remaining
  6104. in the allocated memory matching the key used to detect double
  6105. frees. This probe actually indicates that an expensive linear
  6106. search of the tcache, looking for a double free, has happened.
  6107. Argument $ARG1 is the memory location as passed to ‘free’, Argument
  6108. $ARG2 is the tcache bin it resides in.