linux/kernel/acct.c
<<
Search
vdiv idiofile_contents"
   1v/a>vspa
 class="comment">/*v/spa
	    2v/a>vspa
 class="comment"> *  linux/kernel/acct.cv/spa
	    3v/a>vspa
 class="comment"> *v/spa
	    4v/a>vspa
 class="comment"> *  BSD Process Accounting for Linuxv/spa
	    5v/a>vspa
 class="comment"> *v/spa
	    6v/a>vspa
 class="comment"> *  Author: Marco    7v/a>vspa
 class="comment"> *v/spa
	    8v/a>vspa
 class="comment"> *  Some code based on ideas and code from:v/spa
	    9v/a>vspa
 class="comment"> *  Thomas K. Dyas <tdyas@eden.rutgers.edu>v/spa
	   v3.1a>vspa
 class="comment"> *v/spa
	   11v/a>vspa
 class="comment"> *  This file implements BSD-style process accounting. Whenever anyv/spa
	   12v/a>vspa
 class="comment"> *  process exits, an accounting record of typt "struct acct" isv/spa
	   13v/a>vspa
 class="comment"> *  written to the file specified with the acct() system call. It isv/spa
	   14v/a>vspa
 class="comment"> *  up to user-level programs to do useful things with the accountingv/spa
	   15v/a>vspa
 class="comment"> *  log. The kernel just provides the raw accounting informa12"
.v/spa
	   16v/a>vspa
 class="comment"> *v/spa
	   17v/a>vspa
 class="comment"> * (C) Copyright 1995 - 1997 Marco   18v/a>vspa
 class="comment"> *v/spa
	   19v/a>vspa
 class="comment"> *  Plugged two leaks. 1) It didn't return acct_file into the free_filps ifv/spa
	   23.1a>vspa
 class="comment"> *  the file happened to be read-only. 2) If the accounting was suspendedv/spa
	   21v/a>vspa
 class="comment"> *  due to the lack of space it happily allowed to reopen it and completelyv/spa
	   22v/a>vspa
 class="comment"> *  lost the old acct_file. 3/10/98, Al Viro.v/spa
	   23v/a>vspa
 class="comment"> *v/spa
	   24v/a>vspa
 class="comment"> *  Now we silently close acct_file on attempt to reopen. Cleaned sys_acct().v/spa
	   25v/a>vspa
 class="comment"> *  XTerms and EMACS are manifestations of pure evil. 21/10/98, AV.v/spa
	   26v/a>vspa
 class="comment"> *v/spa
	   27v/a>vspa
 class="comment"> *  Fixed a nasty interac12"
 with with sys_umount(). If the accointingv/spa
	   28v/a>vspa
 class="comment"> *  was suspeneded we failed to stop it "
 umount(). Messy.v/spa
	   29v/a>vspa
 class="comment"> *  Another "
e: remount to readonly didn't stop accounting.v/spa
	   33.1a>vspa
 class="comment"> *      Quest2"
: what should we do if we have CAP_SYS_ADMIN but notv/spa
	   31v/a>vspa
 class="comment"> *  CAP_SYS_PACCT? Current code does the following: umount returns -EBUSYv/spa
	   32v/a>vspa
 class="comment"> *  unless we are messing with the root. In that case we are getting av/spa
	   33v/a>vspa
 class="comment"> *  real mess with do_remount_sb(). 9/11/98, AV.v/spa
	   34v/a>vspa
 class="comment"> *v/spa
	   35v/a>vspa
 class="comment"> *  Fixed a bunch of races (and pair of leaks). Probably not the best way,v/spa
	   36v/a>vspa
 class="comment"> *  but this "
e obviously doesn't introduce deadlocks. Later. BTW, foundv/spa
	   37v/a>vspa
 class="comment"> *  "
e race (and leak) in BSD implementa12"
.v/spa
	   38v/a>vspa
 class="comment"> *  OK, that's better. ANOTHER race and leak in BSD variant. There alwaysv/spa
	   39v/a>vspa
 class="comment"> *  is "
e more bug... 10/11/98, AV.v/spa
	   43.1a>vspa
 class="comment"> *v/spa
	   41v/a>vspa
 class="comment"> *      Oh, fsck... Oopsable SMP race in do_process_acct() - we must holdv/spa
	   42v/a>vspa
 class="comment"> * ->mmap_sem to walk the vma list of current->mm. Nasty, since it leaksv/spa
	   43v/a>vspa
 class="comment"> * a struct file opened for write. Fixed. 2/6/2000, AV.v/spa
	   44v/a>vspa
 class="comment"> */v/spa
	   45v/a>   46v/a>#include <linux/mm.hv/a>>   47v/a>#include <linux/slab.hv/a>>   48v/a>#include <linux/acct.hv/a>>   49v/a>#include <linux/capability.hv/a>>   50v/a>#include <linux/file.hv/a>>   51v/a>#include <linux/tty.hv/a>>   52v/a>#include <linux/security.hv/a>>   53v/a>#include <linux/vfs.hv/a>>   54v/a>#include <linux/jiffies.hv/a>>   55v/a>#include <linux/times.hv/a>>   56v/a>#include <linux/syscalls.hv/a>>   57v/a>#include <linux/mount.hv/a>>   58v/a>#include <asm/uaccess.hv/a>>   59v/a>#include <asm/div64.hv/a>>   60v/a>#include <linux/blkdev.hv/a>> vspa
 class="comment">/* sector_div */v/spa
	   61v/a>#include <linux/pid_namtspace.hv/a>>   62v/a>   63v/a>vspa
 class="comment">/*v/spa
	   64v/a>vspa
 class="comment"> * These constants control the amount of freespace that suspend andv/spa
	   65v/a>vspa
 class="comment"> * resume the process accounting system, and the time delay betweenv/spa
	   66v/a>vspa
 class="comment"> * each check.v/spa
	   67v/a>vspa
 class="comment"> * Turned into sysctl-controllable paramtters. AV, 12/11/98v/spa
	   68v/a>vspa
 class="comment"> */v/spa
	   69v/a>   70v/a>int va href="+code=acct_parm" class="sref">acct_parmv/a>[3] = {4, 2, 30};   71v/a>#define va href="+code=RESUME" class="sref">RESUMEv/a>          (va href="+code=acct_parm" class="sref">acct_parmv/a>[0])  vspa
 class="comment">/* >foo% free space - resume */v/spa
	   72v/a>#define va href="+code=SUSPEND" class="sref">SUSPENDv/a>         (va href="+code=acct_parm" class="sref">acct_parmv/a>[1])  vspa
 class="comment">/* <foo% free space - suspend */v/spa
	   73v/a>#define va href="+code=ACCT_TIMEOUT" class="sref">ACCT_TIMEOUTv/a>    (va href="+code=acct_parm" class="sref">acct_parmv/a>[2])  vspa
 class="comment">/* foo second timeout between checks */v/spa
	   74v/a>   75v/a>vspa
 class="comment">/*v/spa
	   76v/a>vspa
 class="comment"> * External references and all of the globals.v/spa
	   77v/a>vspa
 class="comment"> */v/spa
	   78v/a>static void va href="+code=do_acct_process" class="sref">do_acct_processv/a>(struct va href="+code=bsd_acct_struct" class="sref">bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>,   79v/a>                struct va href="+code=pid_namtspace" class="sref">pid_namtspacev/a> *va href="+code=ns" class="sref">nsv/a>, struct va href="+code=file" class="sref">filev/a> *);   80v/a>   81v/a>vspa
 class="comment">/*v/spa
	   82v/a>vspa
 class="comment"> * This structure is used so that all the data protected by lockv/spa
	   83v/a>vspa
 class="comment"> * ca
 be placed in the same cache line as the lock.  This primesv/spa
	   84v/a>vspa
 class="comment"> * the cache line to have the data after getting the lock.v/spa
	   85v/a>vspa
 class="comment"> */v/spa
	   86v/a>struct va href="+code=bsd_acct_struct" class="sref">bsd_acct_structv/a> {   87v/a>        int                     va href="+code=active" class="sref">activev/a>;   88v/a>        unsigned long           va href="+code=needcheck" class="sref">needcheckv/a>;   89v/a>        struct va href="+code=file" class="sref">filev/a>             *va href="+code=file" class="sref">filev/a>;   90v/a>        struct va href="+code=pid_namtspace" class="sref">pid_namtspacev/a>    *va href="+code=ns" class="sref">nsv/a>;   91v/a>        struct va href="+code=list_head" class="sref">list_headv/a>        va href="+code=list" class="sref">listv/a>;   92v/a>};   93v/a>   94v/a>static va href="+code=DEFINE_SPINLOCK" class="sref">DEFINE_SPINLOCKv/a>(va href="+code=acct_lock" class="sref">acct_lockv/a>);   95v/a>static va href="+code=LIST_HEAD" class="sref">LIST_HEADv/a>(va href="+code=acct_list" class="sref">acct_listv/a>);   96v/a>   97v/a>vspa
 class="comment">/*v/spa
	   98v/a>vspa
 class="comment"> * Check the amount of free space and suspend/resume accordingly.v/spa
	   99v/a>vspa
 class="comment"> */v/spa
	  100v/a>static int va href="+code=check_free_space" class="sref">check_free_spacev/a>(struct va href="+code=bsd_acct_struct" class="sref">bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+code=file" class="sref">filev/a> *va href="+code=file" class="sref">filev/a>)  101v/a>{  102v/a>        struct va href="+code=kstatfs" class="sref">kstatfsv/a> va href="+code=sbuf" class="sref">sbufv/a>;  103v/a>        int va href="+code=res" class="sref">resv/a>;  104v/a>        int va href="+code=act" class="sref">actv/a>;  105v/a>        va href="+code=u64" class="sref">u64v/a> va href="+code=resume" class="sref">resumev/a>;  106v/a>        va href="+code=u64" class="sref">u64v/a> va href="+code=suspend" class="sref">suspendv/a>;  107v/a>  108v/a>        va href="+code=spin_lock" class="sref">spin_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);  109v/a>        va href="+code=res" class="sref">resv/a> = va href="+code=acct" class="sref">acctv/a>->va href="+code=active" class="sref">activev/a>;  110v/a>        if (!va href="+code=file" class="sref">filev/a> || va href="+code=time_is_before_jiffies" class="sref">time_is_before_jiffiesv/a>(va href="+code=acct" class="sref">acctv/a>->va href="+code=needcheck" class="sref">needcheckv/a>))  111v/a>                goto va href="+code=out" class="sref">outv/a>;  112v/a>        va href="+code=spin_unlock" class="sref">spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);  113v/a>  114v/a>        vspa
 class="comment">/* May block */v/spa
	  115v/a>        if (va href="+code=vfs_statfs" class="sref">vfs_statfsv/a>(&va href="+code=file" class="sref">filev/a>->va href="+code=f_path" class="sref">f_path  v3.1"51a>  ef">f_path  v3.1"51a>  b2 v3.1"51a>   b2 v3.1"51a> he freess="sref">resv/a>;   17v/a>vspa
 class=="com117ode=spin_unlock" class="srefspendv/a>; accta>ef">f_path  v3.1"51a> f_pa="ker; SUSPENDv/a>         (va href="+codc#L104" idioL104" class="liee" namtioL18">  18v/a>vspa
 class=="com11code=spin_lock" class="sref"sumev/a>; accta>ef">f_path  v3.1"51a> f_pa="ker; SSUMEv/a>          (va href="+coc#L104" idioL104" class="liee" namtioL19">  19v/a>vspa
 class=="com11cct.c#L70" idioL70" class="lin1e" namtio1L20">  23.1a>vspa
 class1="com120ode=spin_lock" class="sref"do"kerprocessv/a>(structkert" class="sref">acctfspendv/a>;   21v/a>vspa
 class1="com121ode=spin_lock" class="sref"do"kerprocessv/a>(structkert" class="sref">acctsumev/a>;   12v/a>vspa
 class="ref="2cct.c#L63" idioL63" class="lin1e" namtio1L23">  23v/a>vspa
 class1="com12f="+code=res" tatfs" class="srefa>ef">f_path  v3.1"51a> f_pa=avail acctaspendv/a>;  b2 v3.1"51ae" namtio1L24">  24v/a>vspa
 class1="com124> ss="sref">actv/a>;   25v/a>vspa
 class1="com12f="+code=vfs_else" tatfs" class="srefa>ef">f_path  v3.1"51a> f_pa=avail acctsumev/a>;  b2 v3.1"51ae   26v/a>vspa
 class1="com12a> ss="sref">actv/a>;   27v/a>vspa
 class1="com127="+code=vfs_else#L113" idioL113" class="liee" namtioL28">  28v/a>vspa
 class1="com128> ss="sref">actv/a>;   29v/a>vspa
 class1="com12cct.c#L70" idioL70" class="lin1e" namtio1L30">  33.1a>vspa
 class1="com130ode=spin_lockv/spa
	   31v/a>vspa
 class1="com1ent"> *  CAP_SYS_PACCT? Curreeeeeeeee*
	   32v/a>vspa
 class1="com1ent"> *  unless we are messineeeeeeee*
e on aordin_not_ touchrnelingv/l/acct.c#L18" idioL18" class="linee" namtio1L33">  33v/a>vspa
 class1="com1ent"> *  real mess with do_reeeeeeeee*l/acct.c#L115" idioL115" class="lie" namtio1L34">  34v/a>vspa
 class1="com13s="comment">/*" class="sref">spin_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);  || va href="+code=time_!class="sref">acctv/a>->va href="+code=active" class="sref">acv/a>)   36v/a>vspa
 class1="com13a> class="line" namtioa>;  b2 v3.1"51ae" namtio1L37">  37v/a>vspa
 class1="com137> mment">/*" class="sref"a> = va href="+code=acct" class="sref">acctv/;   38v/a>vspa
 class1="com138> " class="sref">outv/a>;   39v/a>vspa
 class1="com13code=res" cla}#L112" idioL112" class="lie" namtio1L40">  43.1a>vspa
 class1="com14cct.c#L81" idioL81" class="lin1e" namtio1L41">  41v/a>vspa
 class1="com141" idioL115" class="line" namtiov/a>->va href="+code=active" class="sref">activev/a>;   42v/a>vspa
 class1="com142> class="line" namtioa>;   43v/a>vspa
 class1="com143> mment">/*" class="sref"v/a>->va href="+code=active" class="sref">activev/a>;   44v/a>vspa
 class1="com144> mment">/*" class="sref"printckv/a>); acctKERN_INFOkv/a>);  f="kerPm, and the time depata p\nf="ker/acct.c.c#L109" idioL109" class="lie" namtio1L45">  45v/a> }#L112" idioL112" class="lie" namtio1L46">  46v/a>#include &l1t;   47v/a>#include &l1t; class="line" namtioa>;   48v/a>#include &l1t; mment">/*" class="sref"v/a>->va href="+code=active" class="sref">activev/a>;   49v/a>#include &l1t;/*" class="sref"printckv/a>); acctKERN_INFOkv/a>);  f="kerPm, and the time dernel/ap\nf="ker/acct.c.c#L109" idioL109" class="lie" namtio1L50">  50v/a>#include &l1t; }#L112" idioL112" class="lie" namtio1L51">  51v/a>#include &l1t;  52v/a>#include &l1t;  53v/a>#include &l1t; acctv/a>->va href="+code=needcheck" class="sref">needcheckv/a>)) acctime_is_before_jiffiesvode=acct" c +MEOUT" class="sref">ACCT_TIMEOUTv/a>    (va href="+code=acclass="sref">fileHZEOUTv/a>    (vaHZcct.c#L112" idioL112" class="lie" namtio1L54">  54v/a>#include &l1t;/*" class="sref"a> = va href="+code=acct" class="sref">acctv/a>->va href="+code=active" class="sref">activev/a>;   55v/a>#include &l1t;outv/a>;   56v/a>#include &l1t;u64v/f">spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   57v/a>#include &l1t; resv/a>;   58v/a>#include &l1t;  59v/a>#include &l1t;  60v/a>#include &l1t; *v/spa
	   61v/a>#include &l1t; *      Oh, fsck... OopsabCpt to/98, Al Vir	   62v/a>  * This structure is used it9/11/9fixed(i, non-NULLel/acct.c#L25" idioL25" class="lin1e" namtio1L63">  63v/a>vspa
 class1="com1ent">/*v/spa
	   64v/a>vspa
 class1="com1ent"> * These constants controlNOTE: ="kernel/ MUSTcachhelm:v/s coryweenvcordl/acct.c#L25" idioL25" class="lin1e" namtio1L65">  65v/a>vspa
 class1="com1ent"> * resume the process acc used it9/11/9fixeab7 idioL66"6OUTct_lo4ss="l&l1t; bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+code=file" class="sref">filev/a> *va href="+code=file" class="sref">filev/a>)   67v/a>vspa
 class1="com167> id_namtspace" class="sref">pid_namtspacev/a> *va href="+code=ns" class="sref">nsv/a>, struct va href="+codepath  v3.1"51a> b2 v3.1"51ae" namtio1L68">  68v/a>vspa
 class1="com1ent"> c#L87" idioL87" class="lin1e" namtio1L69">  69v/a> filev/a>             *va href="+ss="sref">nsv/a> Al_v/a>, struct va hre Al_v/a>cct" class="sref">acctNULL, struct va hreNULLcct.c#L104" idioL104" class="lie" namtio1L70">  70v/a>int va href1="+co17href="+code=pid_namtspace" class="sref">pid_namtspacev/a>    *va href="+code=ns" ss="sref">nsv/a> Al_, struct va href= Al_, cct" class="sref">acctNULL, struct va hreNULLcct.c#L104" idioL104" class="lie" namtio1L71">  71v/a>#define va 1href=1+code=#L104" idioL104" class="lie" namtio1L72">  72v/a>#define va 1href=172> ->va href="+code=active" class="sref">acv/a>)   73v/a>#define va 1href=173> s="sref">nsv/a> Al_v/a>, struct va hre Al_v/a>cct" class="sref">acctv/a>->va href="+code=active" class="sref">acv/a>)   74v/a> ss="sref">actv/ Al_, struct va href= Al_, cct" class="sref">acctv/a>->va href="+code=needcheck" class="sref">   75v/a>vspa
 class1="com175> *" class="sref"v/a>->va href="+code=active" class="sref">activev/a>;   76v/a>vspa
 class1="com17a> ss="sref">actv/a>a>->va href="+code=active" class="sref">acv/a>) acctNULL, struct va hreNULLcct.c#L104" idioL104" class="lie" namtioL117">  17v/a>vspa
 class=""com177> ass="sref">acctv/a>->va href="+code=needcheck" class="sref"> acctNULL, struct va hreNULLcct.c#L104" idioL104" class="lie" namtio1L78">  78v/a>static void1 va h178> ss="sref">actv/ hrefdel acc->va href="+code=needcheck" class="sref"v/a>;   79v/a>           1     17code=res" cla}#L112" idioL112" class="lie" namtio1L80">  80v/a> acv/a>)   81v/a>vspa
 class1="com18to va href="+code=outss="sref">actv/a>a>->va href="+code=active" class="sref">acv/a>) acctv/a>)   82v/a>vspa
 class1="com182> ass="sref">acctv/a>->va href="+code=needcheck" class="sref"> acct>   83v/a>vspa
 class1="com183> s="sref">nsv/a>v/a>->va href="+code=needcheck" class="sref">needcheckv/a>)) acctime_is_before_jiffiesvode=acct" c +MEOUT" class="sref">ACCT_TIMEOUTv/a>    (va href="+code=acclass="sref">fileHZEOUTv/a>    (vaHZcct.c#L112" idioL112" classlin1e" namtio1L84">  84v/a>vspa
 class1="com184> ss="sref">actv/a>a>->va href="+code=active" class="sref">activev/a>;   85v/a>vspa
 class1="com185> *" class="sref" hrefadadv/a>        va hrefadae=acct_lock" class="sref">acc->va href="+code=needcheck" class="sref"v/a>;   86v/a>struct va h1ref="186ode=res" cla}#L112" idioL112" class="lie" namtioLL87">  87v/a>        int1     1               " cclass="sref">ac Al_v/a>, struct va hre Al_v/a>cct"c.c#L87" idioL87" class="lin1e" namtioL118">  18v/a>vspa
 class="va h188> ss="sref">actv/mnt_unpiioL104" c0 idioLmnt_unpii<" class="sref">acct Al_v/a>, struct va hre Al_v/a>cct"ath" class="sref">f_path  v3.1"51a> f_mntoL104" c0 idioLmntacct.c#L96" idioL96" class="lin1e" namtio1L89">  89v/a>        str1uct v18ruct va href="+code=pss="sref">u64v/f">spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   90v/a>        str1uct v190> k" class="sref""sref">do_acct_processv/a>(struct va href="+code=bass="sref">acctv/a>, struct va href="+code=fss="sref">actv/ Al_, struct va href= Al_, cct"=fss="sref">actv/ Al_v/a>, struct va hre Al_v/a>cct"cc#L113" idioL113" class="lie" namtio1L91">  91v/a>        str1uct v19to va href="+code=outss="sref">actv/="ke_mpt t) acct Al_v/a>, struct va hre Al_v/a>cct"=fss="sref">actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="lie" namtio1L92">  92v/a>};  ass="sref">acct>spin_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   93v/a>   94v/a>static va h1ref="1code=D}#L112" idioL112" class="lie" namtio1L95">  95v/a>static va h1ref="19cct.c#L46" idioL46" class="lin1e" namtio1L96">  96v/a> acctoioL104" c0 idioL96"t.oi<" clcharass="sref">nsv/a>,av/a>;  b2 v3.1"51ae" namtio1L97">  97v/a>vspa
 class1="com1ent">/c#L87" idioL87" class="lin1e" namtio1L98">  98v/a>vspa
 class1="com198> filev/a> *va href="+code=file" class="sref">filev/a>)   19v/a>vspa
 class="ct v19href="+code=file" class="sref">filevfs susp) filemntoL104" c0 idioLmntacctc#L109" idioL109" class="l2ne" namti2L100"> 100v/a>static int2va hr20href="+code=pid_namtspace" class="sref">pid_namtspacev/a>    *va href="+code=ns" ss="sref">nsv/a>>  101v/a>{ bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+code class="sref">acctNULL, struct va hreNULLcct.c#L104" idioL104" class="l2ne" namti2L102"> 102v/a>        st2uct v20cct.c#L63" idioL63" class="lin2ne" namti2L103"> 103v/a>        in2 va h2ef="+code=res"* May block */v/spa
	  104v/a>        in2 va h2ef="+code=act"class="sref">acv/a>) acctv/ap_ idioL104" c0 idioLv/ap_ idi<" class="sref">acct,av/a>; actv/O_WRONLYa>; actv/O_APef="a>; actv/O_LARGEFILEa>;  105v/a>        va2href=2+code=u64" cla " cclass="sref">acIS_ERRa>; acctv/a>)  b2 v3.1"512ne" namti2L106"> 106v/a>        va2href=20a> he freess="sref">resv/PTR_ERRa>; acctv/a>)  107v/a>  108v/a>        va2href=2+code=spin_loce" class="sref">fileS_ISREG) acctv/a>) f_path  v3.1"51a> f_d coryprocessv/a>(stru corycct.ath" class="sref">f_d_in">fprocessv/a>(stru_in">fcct.ath" class="sref">f_i_m">fprocessv/a>(stri_m">fcct.cp.c#L87" idioL87" class="lin2ne" namti2L109"> 109v/a>        va2href=20ruct va href="+code=pss="sref">u64v/="ke_mpt t) acctv/a>) actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="l2ne" namti2L110"> 110v/a>        if2(!va 210> he free-ss="sref">actv/EACCES, struct va hreEACCEScct.c#L104" idioL104" class="l2ne" namti2L111"> 111v/a>          2     211" idioL115" }#L112" idioL112" class="l2ne" namti2L112"> 112v/a>        va2href=21cct.c#L63" idioL63" class="lin2ne" namti2L113"> 113v/a> filev/a> || va href="+code=timeath" class="sref">f_paopv3.1"51a> f_ AV.vv3.1"51a>  114v/a>        vs2a
 cl214> ss="sref">actv/="ke_mpt t) acctv/a>) actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="l2ne" namti2L115"> 115v/a>        if2(va h215> he free-ss="sref">actv/EIOkv/a>);   b22v3.1"216ode=res" cla}#L112" idioL112" class="l2e" namtio2L17">  17v/a>vspa
 class2="com21cct.c#L108" idioL108" class="l2ee" namti2L18">  18v/a>vspa
 class2="com21code=spin_lock" class="sref"> accttask_rnel/a_a hre_before_jiffiesv/ask_rnel/a_a hre_<" class="sref">acctsince ibefore_jiffiesvsince icct.cc#L113" idioL113" class="l2ne" namti2L19">  19v/a>vspa
 class2="com219="+code=res" tatk" class="sref"> f_bv/a>, struct va hrebf="+code cclass="sref">acctNULL, struct va hreNULLcct.c.c#L87" idioL87" class="lin2e" namtio2L20">  23.1a>vspa
 class2="com220> k" class="sref"v/a>, struct va href="+code class="sref">acctkzalloc, struct va hrekzalloc<" clsizeofcsd_acct_struct" class="sref">bsd_acct_structv/a> *va href="+code=acct" )cfss="sref">actv/GFP_KERNEL, struct va hreGFP_KERNELcct.cc#L113" idioL113" class="l2e" namtio2L21">  21v/a>vspa
 class2="com22to va href="+code=outclass="line" namtiov/a>->va href="+code=act cclass="sref">acctNULL, struct va hreNULLcct.c.c#L87" idioL87" class="lin2ee" namti2112">  12v/a>vspa
 class2"ref=222> .3"
	  >ss="sref">actv/="ke_mpt t) acctv/a>) actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="l2e" namtio2L23">  23v/a>vspa
 class2="com223> mment">/he free-ss="sref">actv/ENOMEMkv/a>);   24v/a>vspa
 class2="com224> }#L112" idioL112" class="l2ee" namti2L25">  25v/a>vspa
 class2="com22f="+code=vfs_}#L112" idioL112" class="l2ee" namti2L26">  26v/a>vspa
 class2="com22cct.c#L97" idioL97" class="lin2e" namtio2L27">  27v/a>vspa
 class2="com227ode=spin_unlock" class="srefspin_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   28v/a>vspa
 class2="com22code=spin_loce" ck" class="sref"> f_bv/a>, struct va hrebf="+code cclass="sref">acctNULL, struct va hreNULLcct.c.c#L87" idioL87" class="lin2ee" namti2L29">  29v/a>vspa
 class2="com22ruct va href="+code=pss="sref">u64v/> f_bv/a>, struct va hrebf="+code c>k" class="sref"v/a>, struct va href="+codec#L109" idioL109" class="l2e" namtio2L30">  33.1a>vspa
 class2="com230> k" class="sref"v/a>, struct va href="+code class="sref">acctNULL, struct va hreNULLcct.c#L104" idioL104" class="l2e" namtio2L31">  31v/a>vspa
 class2="com231" idioL115" }#L112" idioL112" class="l2e" namtio2L32">  32v/a>vspa
 class2="com23cct.c#L63" idioL63" class="lin2e" namtio2L33">  33v/a>vspa
 class2="com233> acctmntoL104" c0 idioLmntacct class="sref">acctv/a>) f_path  v3.1"51a> f_mntoL104" c0 idioLmntacctc#L104" idioL104" class="l2e" namtio2L34">  34v/a>vspa
 class2="com23s="comment">/*" class="sref"mnt_piioL104" c0 idioLmnt_pii<" class="sref">acctmntoL104" c0 idioLmntacct.c#L96" idioL96" class="lin2e" namtio2 deadlocks. Later. BTW, 2="com245" idioL115" k" class="sref">acctc#L104" idioL104" c0 idioL96"t.c#L104" idie=accss="sref">u64v/> f_bv/a>, struct va hrebf="+codecfss="sref">actv/v/a>) actv/, struct va href="+codepc#L96" idioL96" class="lin2ee" namti2L36">  36v/a>vspa
 class2="com23code=u64" class="sref">u64v/f">spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   37v/a>vspa
 class2="com23cct.c#L108" idioL108" class="l2e" namtio2L38">  38v/a>vspa
 class2="com23code=spin_lock" class="sref"mntp>; acctmntoL104" c0 idioLmntacct.c"* May block */v/spa
	   39v/a>vspa
 class2="com23code=res" class="sref">resv/ka hr, struct va hreka hr<" class="sref">acctv/a>, struct va href="+code.c#L113" idioL113" class="l2e" namtio2L40">  43.1a>vspa
 class2="com24cct.c#L81" idioL81" class="lin2e" namtio2L41">  41v/a>vspa
 class2="com241" idioL115" he free0c#L113" idioL113" class="l2e" namtio2L42">  42v/a>vspa
 class2="com242>   43v/a>vspa
 class2="com24cct.c#L114" idioL114" class="l2e" namtio2L44">  44v/a>vspa
 class2="com24nt"> * These constants cont/*l/acct.c#L19" idioL19" class="lin2e" namtio2L45">  45v/a>  * resume the process accosysef="+ - en/11//dis/11/98m, and the time d/acct.c#L19" idioL19" class="lin2ee" namti2L46">  46v/a>#include &l2t; * External references and@lude:9fixedlude for the time dernef="s or NULL getshutdown the time d/acct.c#L19" idioL19" class="lin2e" namtio2L47">  47v/a>#include &l2t; */v/spa
	   48v/a>#include &l2t; * Check the amount of freRe fres 0 for su="ker or negael/aterrno values for failurel/acct.c#L25" idioL25" class="lin2e" namtio2L49">  49v/a>#include &l2t; */v/spa
	   50v/a>#include &l2t; *v/spa
	   51v/a>#include &l2t; *      Oh, fsck... Oopsabthe time d. It takeda/98,lude   52v/a>#include &l2t; * This structure is used shouldnd   AV.ten.
	   53v/a>#include &l2t; * ca
 be placed in the sashutdownl/acct.c#L25" idioL25" class="lin2e" namtio2L54">  54v/a>#include &l2t; * These constants contro used it9/11/9fixeab7 idioL66"6OU2e" namtio2L55">  55v/a>#include &l2t;outv/SYSCALL_href="1, struct va hreSYSCALL_href="1<" class="sref">acctv/a>, struct va href="+code,amount charaass="sref">acct__user, struct va hre__user" idi*cfss="sref">actv/,av/a>;  b2 v3.1"512e" namtio2L56">  56v/a>#include &l2t;  57v/a>#include &l2t;actv/error, struct va hreerroracct cl0c#L113" idioL113" class="l2e" namtio2L58">  58v/a>#include &l2t;  59v/a>#include &l2t;filecap/11/before_jiffiesvsap/11/<" class="sref">acctCAP_SYS_P hrebefore_jiffiesvCAP_SYS_P hre b2 v3.1"512e" namtio2L60">  60v/a>#include &l2t; he free-ss="sref">actv/EPERMkv/a>);   61v/a>#include &l2t;  62v/a> ;   63v/a>vspa
 class2="com263> charass="sref">nsv/a>tmpv3.1"51a> acctget,av/a>; u64v/>av/a>;   64v/a>vspa
 class2="com264>  " cclass="sref">acIS_ERRa>; accttmpv3.1"51a>  b2 v3.1"512e" namtio2L65">  65v/a>vspa
 class2="com265> .3"
	  >he freelass="sref">acctPTR_ERRa>; accttmpv3.1"51a>   ss="sref">actv/error, struct va hreerroracct clk" class="sref">acctoioL104" c0 idioL96"t.oi<" class="sref">accttmpv3.1"51a>   67v/a>vspa
 class2="com267> ass="sref">acctput,av/a>; accttmpv3.1"51a>   68v/a>vspa
 class2="com26code=spin_loc}_else"c#L87" idioL87" class="lin2e" namtio2L69">  69v/a> bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+codec#L104" idioL104" class="l2e" namtio2L70">  70v/a>int va href2="+co27cct.c#L81" idioL81" class="lin2e" namtio2L71">  71v/a>#define va 2href=27to va href="+code=outss="sref">actv/a>a>->va href="+code=act class="sref">accttask_rnel/a_a hre_before_jiffiesv/ask_rnel/a_a hre_<" class="sref">acctsince ibefore_jiffiesvsince icct.cath" class="sref">f_bv/a>, struct va hrebf="+codec#L104" idioL104" class="l2e" namtio2L72">  72v/a>#define va 2href=272> class="line" namtioa>a>->va href="+code=act cclass="sref">acctNULL, struct va hreNULLcct.c#L104" idioL104" class="l2e" namtio2L73">  73v/a>#define va 2href=273> .3"
	  >he free0c#L113" idioL113" class="l2e" namtio2L74">  74v/a>   75v/a>vspa
 class2="com275> *" class="sref"fspin_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   76v/a>vspa
 class2="com27a> ss="sref">actv/a>a>tc#L104" idioL104" c0 idioL96"t.c#L104" idie=accss="sref">u64v/v/a>, struct va href="+code,aass="sref">acctNULL, struct va hreNULLcct.cfss="sref">actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="l2e" namtio2117">  17v/a>vspa
 class2""com277> ass="sref">acctf">spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   78v/a>static void2 va h278>   79v/a>           2     27cct.c#L70" idioL70" class="lin2e" namtio2L80">  80v/a> resv/error, struct va hreerroracctc#L113" idioL113" class="l2e" namtio2L81">  81v/a>vspa
 class2="com28to va}#L112" idioL112" class="l2e" namtio2L82">  82v/a>vspa
 class2="com28cct.c#L63" idioL63" class="lin2e" namtio2L83">  83v/a>vspa
 class2="com2ent"> * ca
 be placed in the/*l/acct.c#L19" idioL19" class="lin2e" namtio2L84">  84v/a>vspa
 class2="com2ent"> * the cache line to have ="kerauto_mpt t/-v/freeoff affixelay becks. s the time declait  daoi<"cct.c#L19" idioL19" class="lin2e" namtio2L85">  85v/a>vspa
 class2="com2ent"> */v/spa
	   86v/a>struct va h2ref="28nt"> * External references an<"cct.c#L19" idioL19" class="lin2e" namtio2L87">  87v/a>        int2     28nt"> */v/spa
	   18v/a>vspa
 class2"va h28nt"> * Check the amount of freto by m,v/freethe time deoff.  Donedwhgn mecsvabout to diel/acct.c#L25" idioL25" class="lin2e" namtio2L89">  89v/a>        str2uct v28nt"> */v/spa
	   90v/a>        str2uct v290> filevfs susp) filemoL104" c0 idioLmcct.c#L104" idioL104" class="l2e" namtio2L91">  91v/a>        str2uct v29acct.c#L102" idioL102" class="l2e" namtio2L92">  92v/a>}; k"sref">bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+codec#L104" idioL104" class="l2e" namtio2L93">  93v/a>   94v/a>static va h2ref="29s="comment">/*" class="sref">spin_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   95v/a>static va h2ref="29ef="iss="sref">outv/restar>, struct va hrerestar>f="i:#L110" idioL110" class="l2e" namtio2L96">  96v/a> u64v/ hreffor_each_ coryprocessv/a>(str hreffor_each_ corye=accss="sref">u64v/v/a>, struct va href="+code,aa> actv/v/a>;   97v/a>vspa
 class2="com297> class="line" namtioa>a>->va href="+code=active" class="sref">acv/a>) actv/a>a>->va href="+code=active" class="sref">acv/a>) f_path  v3.1"51a> f_mntoL104" c0 idioLmntacct cclass="sref">acctmoL104" c0 idioLmcct.c"c#L87" idioL87" class="lin2e" namtio2L98">  98v/a>vspa
 class2="com298> mment">/*" class="sref"v/a>tc#L104" idioL104" c0 idioL96"t.c#L104" idie=accss="sref">u64v/v/a>, struct va href="+code,aass="sref">acctNULL, struct va hreNULLcct.cfss="sref">actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="l2e" namtio2119">  19v/a>vspa
 class2"ct v29ruct va href="+code=pmment">/" class="sref">outv/restar>, struct va hrerestar>f="ic#L113" idioL113" class="l3ne" namti3L100"> 100v/a>static int3va hr300> }#L112" idioL112" class="l3ne" namti3L101"> 101v/a>{ spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);  102v/a>        st3uct v302>  103v/a>        in3 va h30cct.c#L94" idioL94" class="lin3ne" namti3L104"> 104v/a>        in3 va h30nt"> * These constants cont/*l/acct.c#L19" idioL19" class="lin3ne" namti3L105"> 105v/a>        va3href=30nt"> */v/spa
	  106v/a>        va3href=30nt"> * External references and@sb:fsupakndnel/ for hreffixelay be<"cct.c#L19" idioL19" class="lin3n7" namti3L97">  97v/a>vspa
 class3ernel30nt"> */v/spa
	  108v/a>        va3href=30nt"> * Check the amount of fre	   19v/a>vspa
 class3href=30nt"> */v/spa
	  110v/a>        if3(!va 31nt"> *v/spa
	  111v/a>          3     311" id href="+code=activ5nacct.auto_mpt toL104" c0 idioLacct.auto_mpt te=accile" class="sref">filesupaka="kerockv/a>(&va upaka="kerct" class="sref">acctsbockv/a>(&va bcct..#L110" idioL110" class="l3ne" namti3L112"> 112v/a>        va3href=31cct.cc#L87" idioL87" class="lin3ne" namti3L113"> 113v/a> k"sref">bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+codec#L104" idioL104" class="l3ne" namti3L114"> 114v/a>        vs3a
 cl314>  115v/a>        if3(va h315" idioL115" k" class="sref">spin_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   b23v3.1"316ode=ss="sref">outv/restar>, struct va hrerestar>f="i:#L110" idioL110" class="l3e" namtio3L17">  17v/a>vspa
 class3="com317ode=spin_unlock" class="sre hreffor_each_ coryprocessv/a>(str hreffor_each_ corye=accss="sref">u64v/v/a>, struct va href="+code,aa> actv/v/a>;   18v/a>vspa
 class3="com318> class="line" namtioa>a>->va href="+code=active" class="sref">acv/a>) actv/a>a>->va href="+code=active" class="sref">acv/a>) f_path  v3.1"51a> (stru corycct.ath" class="sref">f_d_sbockv/a>(&vad_sbacct cclass="sref">acctsbockv/a>(&va bcct.."c#L87" idioL87" class="lin3ne" namti3L19">  19v/a>vspa
 class3="com31ruct va href="+code=pmment">/*" class="sref"v/a>tc#L104" idioL104" c0 idioL96"t.c#L104" idie=accss="sref">u64v/v/a>, struct va href="+code,aass="sref">acctNULL, struct va hreNULLcct.cfss="sref">actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="l3e" namtio3L20">  23.1a>vspa
 class3="com320> mment">/" class="sref">outv/restar>, struct va hrerestar>f="ic#L113" idioL113" class="l3e" namtio3L21">  21v/a>vspa
 class3="com32to va href="+code=out}#L112" idioL112" class="l3ee" namti3112">  12v/a>vspa
 class3"ref=322> spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   23v/a>vspa
 class3="com323>   24v/a>vspa
 class3="com324>   25v/a>vspa
 class3="com32f="+c href="+code=activ5nacct.cordre_before_jiffiesvacct.cordre_e=accile" class="sref">filepef">pid_namtspacev/a> *va href="+code=ns" class="sref">nsv/a>, struct va href="+codepath  v3.1"51a> b2 v3.1"513ee" namti3L26">  26v/a>vspa
 class3="com32code=c#L87" idioL87" class="lin3e" namtio3L27">  27v/a>vspa
 class3="com327ode=spin_unlist_head" class="sref""sref">bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+code class="sref">acct> f_bv/a>, struct va hrebf="+codec#L113" idioL113" class="l3ee" namti3L28">  28v/a>vspa
 class3="com32ef="+#L113" idioL113" class="l3ee" namti3L29">  29v/a>vspa
 class3="com329="+code=res" tatk" class="sref"a>a>->va href="+code=act cclass="sref">acctNULL, struct va hreNULLcct.c#L104" idioL104" class="l3e" namtio3L30">  33.1a>vspa
 class3="com330> he frec#L113" idioL113" class="l3e" namtio3L31">  31v/a>vspa
 class3="com33code=#L104" idioL104" class="l3e" namtio3L32">  32v/a>vspa
 class3="com332> sp_lockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   33v/a>vspa
 class3="com33f="+code=res" tats="line" namtioa>a>->va href="+code=active" class="sref">acv/a>) acctNULL, struct va hreNULLcct.c#L104" idioL104" class="l3ee" namti3L34">  34v/a>vspa
 class3="com33s="comment">/mment">/*" class="sref"v/a>tc#L104" idioL104" c0 idioL96"t.c#L104" idie=accss="sref">u64v/v/a>, struct va href="+code,aass="sref">acctNULL, struct va hreNULLcct.cfss="sref">actv/NULL, struct va hreNULLcct.cc#L113" idioL113" class="l3e" namtio3 deadlocks. Later. BTW, 3="com345" idioL115" k" class="sref"f">spin_unlockv/a>(&va href="+code=acct_lock" class="sref">acct_lockv/a>);   36v/a>vspa
 class3="com33cct.c#L97" idioL97" class="lin3e" namtio3L37">  37v/a>vspa
 class3="com337ode=spin_unlock" class="sreka hr, struct va hreka hr<" class="sref">acctv/a>, struct va href="+code.c#L113" idioL113" class="l3e" namtio3L38">  38v/a>vspa
 class3="com33ef="+}#L112" idioL112" class="l3e" namtio3L39">  39v/a>vspa
 class3="com33cct.c#L70" idioL70" class="lin3e" namtio3L40">  43.1a>vspa
 class3="com34nt"> *v/spa
	   41v/a>vspa
 class3="com34nt"> *      Oh, fsck... Oopsab en>acc    unsigeem:lo decnclaa ck.p_t/acct.c#L98" idioL98" class="lin3e" namtio3L42">  42v/a>vspa
 class3="com34nt"> * This structure is used/acct.c#L98" idioL98" class="lin3e" namtio3L43">  43v/a>vspa
 class3="com34nt"> * ca
 be placed in the sa This rout>vs has been adopted erneahrefen>acc_ck.p_t() function ii<"cct.c#L19" idioL19" class="lin3e" namtio3L44">  44v/a>vspa
 class3="com34nt"> * These constants cont sa hrefL19"_ass="lffixedace d/acct.c#L19" idioL19" class="lin3e" namtio3L45">  45v/a>  * resume the process accoecsva 13-bit eraction /11/9a 3-bit (base 8) exponess./acct.c#L19" idioL19" class="lin3ee" namti3L46">  46v/a>#include &l3t; * External references anl/acct.c#L100" idioL100" class="l3e" namtio3L47">  47v/a>#include &l3t;  48v/a>#include &l3t; #def>vs ass="sref">acctMANTSIZE, struct va hreMANTSIZEode=spin_unl13"v3.18.3"
	  >mment">/* May block */v/spa
	   49v/a>#include &l3t; #def>vs ass="sref">acctEXPSIZE, struct va hreEXPSIZE="comment">/m3"v3.18.3"
	  >mment">//* May block */v/spa
	   50v/a>#include &l3t; #def>vs ass="sref">acctMAXFRArebefore_jiffiesvMAXFRAre="comment">/((1 << ass="sref">acctMANTSIZE, struct va hreMANTSIZEode=) - 1)>//* May block */v/spa
	   51v/a>#include &l3t;  52v/a>#include &l3t;      vaass="sref">acctck.p_t, struct va hreck.p_t/acomass="sref">accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clunsigeem:lo deass="sref">acctvalue, struct va hrevaluecct.c#L104" idioL104" class="l3e" namtio3L53">  53v/a>#include &l3t; c#L87" idioL87" class="lin3e" namtio3L54">  54v/a>#include &l3t;/ va ss="sref">actv/expv3.1"51a> actv/rnadv/a>        varnacodec#L113" idioL113" class="l3e" namtio3L55">  55v/a>#include &l3t;  56v/a>#include &l3t;u64v/expv3.1"51a> acctrnadv/a>        varnacode cl0c#L113" idioL113" class="l3e" namtio3L57">  57v/a>#include &l3t;acctvalue, struct va hrevaluecct. ve"  ass="sref">acctMAXFRArebefore_jiffiesvMAXFRAre="co."c#L87" idioL87" class="lin3e" namtio3L58">  58v/a>#include &l3t; ss="sref">actv/rnadv/a>        varnacode class="sref">acctvalue, struct va hrevaluecct. v> acctEXPSIZE, struct va hreEXPSIZE="com- 1));t">//* May block */v/spa
	   59v/a>#include &l3t;u64v/value, struct va hrevaluecct. ve" ve" class="sref">acctEXPSIZE, struct va hreEXPSIZE="co;nt">//* May block */v/spa
	   60v/a>#include &l3t; ss="sref">u64v/expv3.1"51a>   61v/a>#include &l3t;  62v/a>   63v/a>vspa
 class3="com36f="+code=res"* May block */v/spa
	   64v/a>vspa
 class3="com36nt"> * These constants cont         re	   65v/a>vspa
 class3="com36nt"> * resume the process ac        rl/acct.c#L100" idioL100" class="l3e" namtio3l&l1t;          varnacode a>  acctvalue, struct va hrevaluecct. ve"  ass="sref">acctMAXFRArebefore_jiffiesvMAXFRAre="co.."c#L87" idioL87" class="lin3e" namtio3L67">  67v/a>vspa
 class3="com367> ass="sref">acctvalue, struct va hrevaluecct. ve" ve" class="sref">acctEXPSIZE, struct va hreEXPSIZE="co;#L87" idioL87" class="lin3e" namtio3L68">  68v/a>vspa
 class3="com368> ss="sref">actv/expv3.1"51a>   69v/a>   70v/a>int va href3="+co37cct.c#L81" idioL81" class="lin3e" namtio3L71">  71v/a>#define va 3href=37to va href="+* May block */v/spa
	   72v/a>#define va 3href=37nt"> * This structure is use        reClehisit up rnd polishsit off./acct.c#L19" idioL19" class="lin3e" namtio3L73">  73v/a>#define va 3href=37nt"> * ca
 be placed in the         rl/acct.c#L100" idioL100" class="l3e" namtio3L74">  74v/a> u64v/expv3.1"51a> acctMANTSIZE, struct va hreMANTSIZEode=;="v3.18.3"
	  >s May block */v/spa
	   75v/a>vspa
 class3="com375" idioL115" k" class="sref"expv3.1"51a> acctvalue, struct va hrevaluecct.;="v3.18.3"
	  >	  >s May block */v/spa
	   76v/a>vspa
 class3="com37a> resv/expv3.1"51a>   17v/a>vspa
 class3""com377>   78v/a>static void3 va h37ef="+#L113" idioL113" class="l3e" namtio3L79">  79v/a>           3     37cct.c# tass="sref">resv/ hrefVERSIONv3.1"51a> resv/ hrefVERSIONv3.1"51a>   80v/a>  *v/spa
	   81v/a>vspa
 class3="com38nt"> *      Oh, fsck... Oopsaben>acc    u64ecnclaa ck.p2_t (24"bits)/acct.c#L98" idioL98" class="lin3e" namtio3L82">  82v/a>vspa
 class3="com38nt"> * This structure is used/acct.c#L98" idioL98" class="lin3e" namtio3L83">  83v/a>vspa
 class3="com3ent"> * ca
 be placed in thesabFormat: 5"bit base 2fexponess, 20"bitsfmantissa./acct.c#L98" idioL98" class="lin3e" namtio3L84">  84v/a>vspa
 class3="com3ent"> * the cache line to have Theflehce d"bit   85v/a>vspa
 class3="com3ent"> */v/spa
	   86v/a>struct va h3ref="38nt"> * External references an Largestben>ac/11/9valueecsv50"bits./acct.c#L98" idioL98" class="lin3e" namtio3L87">  87v/a>        int3     38nt"> */v/spa
	   18v/a>vspa
 class3"va h38ef="+#L113" idioL113" class="l3e" namtio3L89">  89v/a>        str3uct v38nt"> #def>vs ass="sref">acctMANTSIZE2, struct va hreMANTSIZE2>   90v/a>        str3uct v39nt"> #def>vs ass="sref">acctEXPSIZE2, struct va hreEXPSIZE2>   91v/a>        str3uct v39acct.#def>vs ass="sref">acctMAXFRAre2, struct va hreMAXFRAre2> acctMANTSIZE2, struct va hreMANTSIZE2> * May block */v/spa
	   92v/a>}; vs ass="sref">acctMAXEXP2, struct va hreMAXEXP2> acctEXPSIZE2, struct va hreEXPSIZE2> //>* May block */v/spa
	   93v/a>   94v/a>static va h3ref="39s="co     vaass="sref">acctck.p2_t, struct va hreck.p2_t/acomass="sref">accten>acc_ck.p2_t, struct va hreen>acc_ck.p2_t<" class="sref">acctuL64">  64v/va hreu64> acctvalue, struct va hrevaluecct.c#L104" idioL104" class="l3e" namtio3L95">  95v/a>static va h3ref="39ef="ic#L87" idioL87" class="lin3e" namtio3L96">  96v/a> actv/expv3.1"51a> actv/rnadv/a>        varnacodec#L113" idioL113" class="l3e" namtio3L97">  97v/a>vspa
 class3="com39cct.c#L108" idioL108" class="l3e" namtio3L98">  98v/a>vspa
 class3="com39code=spin_lock" class="sref"expv3.1"51a> acctvalue, struct va hrevaluecct. ve"  (ass="sref">acctMAXFRAre2, struct va hreMAXFRAre2>   19v/a>vspa
 class3"ct v39code=res" class="sref">resv/rnadv/a>        varnacode cl0c#L113" idioL113" class="l4ne" namti4L100"> 100v/a>static int4va hr400> acctvalue, struct va hrevaluecct. ve"  ass="sref">acctMAXFRAre2, struct va hreMAXFRAre2>  101v/a>{ actv/rnadv/a>        varnacode class="sref">acctvalue, struct va hrevaluecct. v>   92v/a>};  ass="sref">acctvalue, struct va hrevaluecct. ve" ve" cl1c#L113" idioL113" class="l4n3" namti4L93">  93v/a> ss="sref">actv/expv3.1"51a>  104v/a>        in4 va h4ef="+code=act"}#L112" idioL112" class="l4ne" namti4L105"> 105v/a>        va4href=40cct.c#L46" idioL46" class="lin4ne" namti4L106"> 106v/a>        va4href=40a>   97v/a>vspa
 class4ernel40nt"> */v/spa
	  108v/a>        va4href=40nt"> * Check the amount of fnnnnnnnnrl/acct.c#L100" idioL100" class="l4n9" namti4L19">  19v/a>vspa
 class4href=409="+code=res" tatk" class="sref"rnadv/a>        varnacode a>  acctvalue, struct va hrevaluecct. ve"  ass="sref">acctMAXFRAre2, struct va hreMAXFRAre2>  110v/a>        if4(!va 410> ass="sref">acctvalue, struct va hrevaluecct. ve" ve" cl1c#L113" idioL113" class="l4ne" namti4L111"> 111v/a>          4     41to va href="+code=outss="sref">actv/expv3.1"51a>  112v/a>        va4href=412="+code=act"}#L112" idioL112" class="l4ne" namti4L113"> 113v/a>  114v/a>        vs4a
 cl414>  acctMAXEXP2, struct va hreMAXEXP2>  115v/a>        if4(va h415> * May block */v/spa
	   b24v3.1"41a> he freel1ul << (ass="sref">acctMANTSIZE2, struct va hreMANTSIZE2> acctEXPSIZE2, struct va hreEXPSIZE2>   17v/a>vspa
 class4="com417ode=spin_unl}_else"c#L87" idioL87" class="lin4ee" namti4L18">  18v/a>vspa
 class4="com418> he freelass="sref">acctvalue, struct va hrevaluecct. v> acctMAXFRAre2, struct va hreMAXFRAre2>  acctMANTSIZE2, struct va hreMANTSIZE2>   19v/a>vspa
 class4="com41code=res" cla}#L112" idioL112" class="l4e" namtio4L20">  23.1a>vspa
 class4="com420>   21v/a>vspa
 class4="com42to va#endif#L112" idioL112" class="l4ee" namti4112">  12v/a>vspa
 class4"ref=42cct.c#L63" idioL63" class="lin4e" namtio4L23">  23v/a>vspa
 class4="com423> resv/ hrefVERSIONv3.1"51a>   24v/a>vspa
 class4="com42nt"> * These constants cont/*/acct.c#L100" idioL100" class="l4ee" namti4L25">  25v/a>vspa
 class4="com42nt"> */v/spa
	   26v/a>vspa
 class4="com42nt"> * External references anl/acct.c#L100" idioL100" class="l4e" namtio4L27">  27v/a>vspa
 class4="com427ode=     vaass="sref">acctu32, struct va hreu32> accten>acc_float, struct va hreen>acc_float/a class="sref">acctuL64">  64v/va hreu64> acctvalue, struct va hrevaluecct.c#L104" idioL104" class="l4ee" namti4L28">  28v/a>vspa
 class4="com42ef="+c#L87" idioL87" class="lin4ee" namti4L29">  29v/a>vspa
 class4="com429="+code=res"unsigeem:k" class="sref"expv3.1"51a>   33.1a>vspa
 class4="com430>   64v/va hreucodec#L113" idioL113" class="l4e" namtio4L31">  31v/a>vspa
 class4="com43code=#L104" idioL104" class="l4e" namtio4L32">  32v/a>vspa
 class4="com432> he free0c#L113" idioL113" class="l4e" namtio4L33">  33v/a>vspa
 class4="com43f="+code=res"whixed(tk" class="sref"sL64">  64v/va hres64> acctvalue, struct va hrevaluecct. ve"  0)c#L87" idioL87" class="lin4ee" namti4L34">  34v/a>vspa
 class4="com43s="comment">/mment">/*" class="sref"value, struct va hrevaluecct. vlt;<cl1c#L113" idioL113" class="l4e" namtio4 deadlocks. Later. BTW, 4="com435> *" class="sref"expv3.1"51a>   36v/a>vspa
 class4="com43code=u64" cla}#L112" idioL112" class="l4e" namtio4L37">  37v/a>vspa
 class4="com437ode=spin_unlock" class="sreu4">  64v/va hreucode cl(ass="sref">acctu32, struct va hreu32> acctvalue, struct va hrevaluecct. ve" ve"  40)>v>   38v/a>vspa
 class4="com43code=spin_loche freess="sref">resv/u4">  64v/va hreucode |atk" class="sref"expv3.1"51a>   39v/a>vspa
 class4="com43cct.c}#L112" idioL112" class="l4e" namtio4L40">  43.1a>vspa
 class4="com44nt"> #endif#L112" idioL112" class="l4e" namtio4L41">  41v/a>vspa
 class4="com44code=#L104" idioL104" class="l4e" namtio4L42">  42v/a>vspa
 class4="com44nt"> * This structure is us/*/acct.c#L100" idioL100" class="l4e" namtio4L43">  43v/a>vspa
 class4="com44nt"> * ca
 be placed in the sa Writc    ahe time de corysfor tn corde deref="+codcct.c#L25" idioL25" class="lin4e" namtio4L44">  44v/a>vspa
 class4="com44nt"> * These constants cont sodcct.c#L25" idioL25" class="lin4e" namtio4L45">  45v/a>  * resume the process accoeTrefthet_ref="+c() cby l da/98,workhorsed  46v/a>#include &l4t; * External references and ahe time delay be. Thefist_heaass=l dabuilt hglo tnd hren  AV.tenodcct.c#L25" idioL25" class="lin4e" namtio4L47">  47v/a>#include &l4t; */v/spa
	   48v/a>#include &l4t; * Check the amount of fre do.cord() or whgn switche declaa dif globt outp>;efixe.odcct.c#L25" idioL25" class="lin4e" namtio4L49">  49v/a>#include &l4t; */v/spa
	   50v/a>#include &l4t;  51v/a>#include &l4t; *      Oh, fsck... Oop/*/acct.c#L100" idioL100" class="l4e" namtio4L52">  52v/a>#include &l4t; * This structure is used  do.thet_ref="+c does by lactual,work. Cby er holdda/98,re globalcclafixe.odcct.c#L25" idioL25" class="lin4e" namtio4L53">  53v/a>#include &l4t; * ca
 be placed in the sl/acct.c#L100" idioL100" class="l4e" namtio4L54">  54v/a>#include &l4t; bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+code,#L100" idioL100" class="l4e" namtio4L55">  55v/a>#include &l4t; ile" class="sref">filepef">pid_namtspacev/a> *va href="+code=ns" class="sref">nsv/a>, struct va href="+code,>ile" class="sref">filev/a>) nsv/a>v/a>)   56v/a>#include &l4t;  57v/a>#include &l4t;bsd_acct_structv/a> *vapf="+code=acct" class="sref">acctpv/a>, struct va hrepf="+code clt_lock" class="sref"since ibefore_jiffiesvsince icct.ive" class="sref">acsigeal4">  64v/va hresigealcct.ive" class="sref">acpv/a>, struct va hrepf="+codec#L104" idioL104" class="l4e" namtio4L58">  58v/a>#include &l4t;acctactv/a>);   59v/a>#include &l4t;resv/mm_segin tcstv/a>); acctf struct va href=fscodec#L104" idioL104" class="l4e" namtio4L60">  60v/a>#include &l4t; acctflimoL104" c0 idioLflimcodec#L104" idioL104" class="l4e" namtio4L61">  61v/a>#include &l4t;  64v/va hreu64> acctelapseadv/a>        vaelapseacodec#L104" idioL104" class="l4e" namtio4L62">  62v/a>   64v/va hreu64> acctrun_tiv/a>;   63v/a>vspa
 class4="com46f="+code=res"statfs" class="sref">ktiv/spectv/a>);  acctuptiv/a>;   64v/a>vspa
 class4="com464> kttysd_acct_structv/a> *vattysd_acctct" class="sref">accttty_structv/a> *vattycodec#L104" idioL104" class="l4e" namtio4L65">  65v/a>vspa
 class4="com465> kcreadv/a>        vacreact" class="sref">acctorig_creadv/a>        vaorig_creacodec#L104" idioL104" class="l4e" namtio4l&l1t;   67v/a>vspa
 class4="com467>   68v/a>vspa
 class4="com46code=spin_lock" class="sref"orig_creadv/a>        vaorig_creacode class="sref">acctacctv/a>) f_pacreadv/a>        vaf_creacodepc#L104" idioL104" class="l4e" namtio4L69">  69v/a>   70v/a>int va href4="+co470>   71v/a>#define va 4href=47nt"> *      Oh, fsck... Oopsssssssss* Firnt checkcclasee8 tathglo is enough a hr_de=nscclamoume uecccct.c#L100" idioL100" class="l4e" namtio4L72">  72v/a>#define va 4href=47nt"> * This structure is use        rehrefref="+c ahe time delay be.cccct.c#L100" idioL100" class="l4e" namtio4L73">  73v/a>#define va 4href=47nt"> * ca
 be placed in the         rl/acct.c#L100" idioL100" class="l4e" namtio4L74">  74v/a> kcheck_a hr_de=nsdv/a>        vacheck_a hr_de=ns/a class="sref">acctv/a>, struct va href="+code,lass="sref">filev/a>)  b2 v3.1"514e" namtio4L75">  75v/a>vspa
 class4="com475> " class="sref">outv/ou>, struct va hreou>codec#L104" idioL104" class="l4e" namtio4L76">  76v/a>vspa
 class4="com47cct.c#L97" idioL97" class="lin4e" namtio4117">  17v/a>vspa
 class4""com477>   78v/a>static void4 va h47nt"> * Check the amount of fnnnnnnnnr Fillahrefthe time destatfs"/11/9href="ke/dfinfo as recorded/acct.c#L19" idioL19" class="lin4e" namtio4L79">  79v/a>           4     47nt"> */v/spa
	   80v/a>  *v/spa
	   81v/a>vspa
 class4="com481ode=spin_lock" class="sref"memsestv/a>); atv/a>); acctv/a>cstv/a>);   82v/a>vspa
 class4="com48cct.c#L63" idioL63" class="lin4e" namtio4L83">  83v/a>vspa
 class4="com483ode=spin_lock" class="sref">atv/a>); ); acct hrefVERSIONv3.1"51a> resv/ hrefBYTEORDERv3.1"51a>   84v/a>vspa
 class4="com48s="comment">/*" class="sref">trlcpy_structv/a> *va>trlcpy/a class="sref">acctv/tv/a>); ); filesince ibefore_jiffiesvsince icct.ive" class="sref">acref=tv/a>); acctv/tv/a>); );   85v/a>vspa
 class4="com48cct.c#L46" idioL46" class="lin4e" namtio4L86">  86v/a>struct va h4ref="48a>   87v/a>        int4     487ode=spin_unlock" class="sredo_posix_mptck_mon clnic_gettiv/a>; ;   18v/a>vspa
 class4"va h48code=spin_lock" class="sref"run_tiv/a>; acctuL64">  64v/va hreu64> acctuptiv/a>; ); acctNSEC_PER_SECtv/a>); acctuptiv/a>; );   89v/a>        str4uct v48code=res" class="sref">resv/run_tiv/a>; acctuL64">  64v/va hreu64> acctsince ibefore_jiffiesvsince icct.ive" class="sref">acgroup_lehcerbefore_jiffiesvgroup_lehcercct.ive" class="sref">acstar>_tiv/a>; ); acctNSEC_PER_SECtv/a>);   90v/a>        str4uct v490> mment">+ ass="sref">acctsince ibefore_jiffiesvsince icct.ive" class="sref">acgroup_lehcerbefore_jiffiesvgroup_lehcercct.ive" class="sref">acstar>_tiv/a>; );   91v/a>        str4uct v49to va href="+* May block */v/spa
	   92v/a>};          vaelapseacode class="sref">acct> ec_to_AHZstruct va href="+ec_to_AHZ/a class="sref">acctrun_tiv/a>;   93v/a> resv/ hrefVERSIONv3.1"51a>   94v/a>static va h4ref="49s="comment">/*" class="sref"v/tv/a>); ; accten>acc_float, struct va hreen>acc_float/a class="sref">acctelapseadv/a>        vaelapseacodepc#L104" idioL104" class="l4e" namtio4L95">  95v/a>static va h4ref="49ef="i#else#L104" idioL104" class="l4e" namtio4L96">  96v/a> u64v/v/tv/a>); ; accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clk" class="sref"elapseadv/a>        vaelapseacode < (unsigeem:lo d) -1l ?#L104" idioL104" class="l4e" namtio4L97">  97v/a>vspa
 class4="com497> >>>>>>>>>>>>>>>(unsigeem:lo d) k" class="sref"elapseadv/a>        vaelapseacode : (unsigeem:lo d) -1lpc#L104" idioL104" class="l4e" namtio4L98">  98v/a>vspa
 class4="com49code=#endif#L112" idioL112" class="l4e" namtio4119">  19v/a>vspa
 class4"ct v49cct.c# tass="sref">resv/ hrefVERSIONv3.1"51a> resv/ hrefVERSIONv3.1"51a>  100v/a>static int5va hr500>  101v/a>{   92v/a>};  ass="sref">acctck.p2_t, struct va hreck.p2_t/acomass="sref">acctetiv/a>; accten>acc_ck.p2_t, struct va hreen>acc_ck.p2_t<" class="sref">acctelapseadv/a>        vaelapseacodepc#L104" idioL104" class="l5n3" namti5L93">  93v/a> ss="sref">actv/v/tv/a>); ; acctetiv/a>;   94v/a>static va h5 va h5ef="+code=act".3"
	  >ss="sref">actv/v/tv/a>); ; acctu  v3.1"51a>va hreu1a> ;   95v/a>static va h5href=505>  106v/a>        va5href=50a>   97v/a>vspa
 class5ernel507ode=spin_unlock" class="sredo_diva>; acctelapseadv/a>        vaelapseacode,lass="sref">fileAHZstruct va href=AHZ/a cpc#L104" idioL104" class="l5n8" namti5L98">  98v/a>vspa
 class5href=50code=spin_lock" class="sref"f=tv/a>); ; acctget_secona struct va href=get_secona <" clp - ass="sref">acctelapseadv/a>        vaelapseacodec#L104" idioL104" class="l5n9" namti5L19">  19v/a>vspa
 class5href=509="+code=res"s May block */v/spa
	  110v/a>        if5(!va 510> );         vaac_uiacode class="sref">acctorig_creadv/a>        vaorig_creacodeive" class="sref">acuiadv/a>        vauiacodec#L104" idioL104" class="l5ne" namti5L111"> 111v/a>          5     511ode=spin_lock" class="sref"f=tv/a>);         vaac_giacode class="sref">acctorig_creadv/a>        vaorig_creacodeive" class="sref">acgiadv/a>        vagiacodec#L104" idioL104" class="l5n2" namti5L112"> 112v/a>        va5href=512="+c# tass="sref">resv/ hrefVERSIONv3.1"51a>  113v/a> atv/a>);         vaac_ahzcode class="sref">acctAHZstruct va href=AHZ/a cc#L104" idioL104" class="l5n4" namti5L114"> 114v/a>        vs5a
 cl514>  115v/a>        if5(va h515> resv/ hrefVERSIONv3.1"51a> resv/ hrefVERSIONv3.1"51a>   b25v3.1"51a>   17v/a>vspa
 class5="com517ode=spin_unlock" class="sref=tv/a>); va hreac_uia  code class="sref">acctf=tv/a>);         vaac_uiacodec#L104" idioL104" class="l5n8" namti5L18">  18v/a>vspa
 class5="com51code=spin_lock" class="sref"f=tv/a>); va hreac_gia  code class="sref">acctf=tv/a>);         vaac_giacodec#L104" idioL104" class="l5n9" namti5L19">  19v/a>vspa
 class5="com51code=#endif#L112" idioL112" class="l5e" namtio5L20">  23.1a>vspa
 class5="com520> resv/ hrefVERSIONv3.1"51a>   21v/a>vspa
 class5="com521ode=spin_lock" class="sref"f=tv/a>);         vaac_piacode class="sref">accttask_tgef="rre_before_jiffiesvtask_tgef="rre_<" class="sref">acctsince ibefore_jiffiesvsince icct.,lass="sref">file, struct va href="+codepc#L104" idioL104" class="l5ee" namti5112">  12v/a>vspa
 class5"ref=522> );   23v/a>vspa
 class5="com523ode=spin_lock" class="sref">atv/a>);         vaac_ppiacode class="sref">accttask_tgef="rre_before_jiffiesvtask_tgef="rre_<" class="sref">acctrcu_dere globalkv/a>); acctsince ibefore_jiffiesvsince icct.ive" class="sref">acreal_pace ibefore_jiffiesvreal_pace icodep,lass="sref">file, struct va href="+codepc#L104" idioL104" class="l5e4" namti5L24">  24v/a>vspa
 class5="com52s="comment">/*" class="sref"rcu_readtin_unlockv/a>(&varcu_readtin_unl<" clpc#L104" idioL104" class="l5ee" namti5L25">  25v/a>vspa
 class5="com525ode=#endif#L112" idioL112" class="l5ee" namti5L26">  26v/a>vspa
 class5="com52cct.c#L97" idioL97" class="lin5e" namtio5L27">  27v/a>vspa
 class5="com527ode=spin_unlock" class="sreref="+cod_irqa>; acsighanda>; acsig_unlockv/a>(&va ig_unlcodepc#L104" idioL104" class="l5e8" namti5L28">  28v/a>vspa
 class5="com52code=spin_lock" class="sref"tty_structv/a> *vattycode class="sref">acctsince ibefore_jiffiesvsince icct.ive" class="sref">acsigeal4">  64v/va hresigealcct.ive" class="sref">actty_structv/a> *vattycodecv3.18*v/spa
	   29v/a>vspa
 class5="com52code=res" class="sref">resv/>atv/a>);  *vaac_ttycode class="sref">accttty_structv/a> *vattycode ?lass="sref">acctold_en>acc_deva>; acctttysdevnu=tv/a>); accttty_structv/a> *vattycode)) :e0c#L113" idioL113" class="l5e" namtio5L30">  33.1a>vspa
 class5="com530> ); ; accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clk" class="sref"jiffies_to_AHZstruct va href=jiffies_to_AHZ<" class="sref">acctsputiv/_to_jiffiesbefore_jiffiesvsputiv/_to_jiffies<" class="sref">acctpv/a>, struct va hrepf="+codeive" class="sref">acac_utiv/a>;   31v/a>vspa
 class5="com531ode=spin_lock" class="sref"f=tv/a>); ; accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clk" class="sref"jiffies_to_AHZstruct va href=jiffies_to_AHZ<" class="sref">acctsputiv/_to_jiffiesbefore_jiffiesvsputiv/_to_jiffies<" class="sref">acctpv/a>, struct va hrepf="+codeive" class="sref"df_ac_stiv/a>;   32v/a>vspa
 class5="com532> ); ; acctpv/a>, struct va hrepf="+codeive" class="sref"df_ac_flaga>;   33v/a>vspa
 class5="com533ode=spin_lock" class="sref">atv/a>); ); accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clk" class="sref"pv/a>, struct va hrepf="+codeive" class="sref"df_ac_me=tv/a>);   34v/a>vspa
 class5="com53s="comment">/*" class="sref">atv/a>); ); accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clk" class="sref"pv/a>, struct va hrepf="+codeive" class="sref"df_ac_minflstv/a>); atv/a>); ); accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clk" class="sref"pv/a>, struct va hrepf="+codeive" class="sref"df_ac_majflstv/a>);   36v/a>vspa
 class5="com53code=u64" class="sref">u64v/v/tv/a>); ; acctpv/a>, struct va hrepf="+codeive" class="sref"df_ac_exitf"dfa>;   37v/a>vspa
 class5="com537ode=spin_unlock" class="sresef="in_unl_irqa>; acsighanda>; acsig_unlockv/a>(&va ig_unlcodepc#L104" idioL104" class="l5ee" namti5L38">  38v/a>vspa
 class5="com53code=spin_lock" class="sref"f=tv/a>); ; accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" cl0+* May block */v/spa
	 /* May block */v/spa
	   39v/a>vspa
 class5="com53code=res" class="sref">resv/>atv/a>); ; accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" clk" class="sref"f=tv/a>); ;   43.1a>vspa
 class5="com540> ); accten>acc_ck.p_t, struct va hreen>acc_ck.p_t<" cl0pc#L104" idioL104" class="l5e" namtio5L41">  41v/a>vspa
 class5="com54code=#L104" idioL104" class="l5e" namtio5L42">  42v/a>vspa
 class5="com542>   43v/a>vspa
 class5="com54nt"> * ca
 be placed in the         * K19" c segin t   44v/a>vspa
 class5="com54nt"> * These constants cont         * clahrefthe time defixe./acct.c#L98" idioL98" class="lin5ee" namti5L45">  45v/a>  * resume the process ac        *l/acct.c#L100" idioL100" class="l5ee" namti5L46">  46v/a>#include &l5t;u64v/f struct va href=fscode class="sref">acctget_f struct va href=get_f <" clpc#L104" idioL104" class="l5e" namtio5L47">  47v/a>#include &l5t;  48v/a>#include &l5t;   49v/a>#include &l5t; */v/spa
	   50v/a>#include &l5t; *v/spa
	   51v/a>#include &l5t;acctsince ibefore_jiffiesvsince icct.ive" class="sref">acsigeal4">  64v/va hresigealcct.ive" class="sref">acrlimoL104" c0 idioLrlimcode[class="sref">acRLIMIT_FSIZE, struct va hreRLIMIT_FSIZEcode].class="sref"df_rlim_sinoL104" c0 idioLrlim_sincodec#L104" idioL104" class="l5e" namtio5L52">  52v/a>#include &l5t; acsigeal4">  64v/va hresigealcct.ive" class="sref">acrlimoL104" c0 idioLrlimcode[class="sref">acRLIMIT_FSIZE, struct va hreRLIMIT_FSIZEcode].class="sref"df_rlim_sinoL104" c0 idioLrlim_sincode class="sref">acctRLIM_INFINITY, struct va hreRLIM_INFINITYcodec#L104" idioL104" class="l5e" namtio5L53">  53v/a>#include &l5t;) f_paopv3.1"51a> f_writcv3.1"51a> atv/a>);   54v/a>#include &l5t;>>>>>>>>>>>>>>>sizeoflass="sref">acctv/a>cstv/a>); ) f_papo struct va href=fapo codepc#L104" idioL104" class="l5e" namtio5L55">  55v/a>#include &l5t; acsigeal4">  64v/va hresigealcct.ive" class="sref">acrlimoL104" c0 idioLrlimcode[class="sref">acRLIMIT_FSIZE, struct va hreRLIMIT_FSIZEcode].class="sref"df_rlim_sinoL104" c0 idioLrlim_sincode class="sref">acctflimoL104" c0 idioLflimcodec#L104" idioL104" class="l5e" namtio5L56">  56v/a>#include &l5t;u64v/set_f struct va href=set_f <" clock" class="sref struct va href=fscodepc#L104" idioL104" class="l5e" namtio5L57">  57v/a>#include &l5t;acctou>, struct va hreou>code:#L104" idioL104" class="l5ee" namti5L58">  58v/a>#include &l5t;  59v/a>#include &l5t;  60v/a>#include &l5t;  61v/a>#include &l5t; *      Oh, fsck... Oop/*a/acct.c#L100" idioL100" class="l5e" namtio5L62">  62v/a>  * This structure is used ="kercollecte- collectethe time deinformameouecnclapf="+code=acctcct.c#L100" idioL100" class="l5e" namtio5L63">  63v/a>vspa
 class5="com56nt"> * ca
 be placed in the sa@exitf"df: task cord f"dfcocct.c#L100" idioL100" class="l5e" namtio5L64">  64v/a>vspa
 class5="com56nt"> * These constants cont s @group_dead:vnot 0,8 tath da/9readl da/98, cot   65v/a>vspa
 class5="com56nt"> * resume the process accl/acct.c#L100" idioL100" class="l5e" namtio5l&l1t; ); acctexitf"dfa>; actv/group_deadstruct va href=group_deadcodep#L100" idioL100" class="l5e" namtio5L67">  67v/a>vspa
 class5="com567>   68v/a>vspa
 class5="com56code=spin_locist_head" class="sref"pf">bsd_acct_structv/a> *vapf="+code=acct" class="sref">acctpv/a>, struct va hrepf="+code clt_lock" class="sref"since ibefore_jiffiesvsince icct.ive" class="sref">acsigeal4">  64v/va hresigealcct.ive" class="sref">acpv/a>, struct va hrepf="+codec#L104" idioL104" class="l5e" namtio5L69">  69v/a> acctvsize, struct va hrevsizecode cl0c#L113" idioL113" class="l5e" namtio5L70">  70v/a>int va href5="+co57cct.c#L81" idioL81" class="lin5e" namtio5L71">  71v/a>#define va 5href=571ode=spin_loc tatk" class="sref"group_deadstruct va href=group_deadcode a>  acf=tv/a>);   72v/a>#define va 5href=572> ist_head" class="sref"vm_areasd_acct_structv/a> *vavm_areasd_acctct" class="sref">acctvma_structv/a> *vavmacodec#L104" idioL104" class="l5e" namtio5L73">  73v/a>#define va 5href=573> ss="sref">actv/down_read_structv/a> *vadown_read<" clt_lock" class="sref"since ibefore_jiffiesvsince icct.ive" class="sref">acf=tv/a>); acf=ap_se=tv/a>);   74v/a> ass="sref">acctvma_structv/a> *vavmacode class="sref">acctsince ibefore_jiffiesvsince icct.ive" class="sref">acf=tv/a>); acf=aptv/a>);   75v/a>vspa
 class5="com575> whixed(ass="sref">acctvma_structv/a> *vavmacodec8c#L87" idioL87" class="lin5e" namtio5L76">  76v/a>vspa
 class5="com57a> .3"
	  >ass="sref">acctvsize, struct va hrevsizecode +class="sref">acctvma_structv/a> *vavmacodeive" class="sref">acvm_enda>; acctvma_structv/a> *vavmacodeive" class="sref">acvm_star>a>;   17v/a>vspa
 class5""com577> >>>>>>>>ass="sref">acctvma_structv/a> *vavmacode class="sref">acctvma_structv/a> *vavmacodeive" class="sref">acvm_nex>a>;   78v/a>static void5 va h578> }#L112" idioL112" class="l5e" namtio5L79">  79v/a>           5     579="+code=act".3"
	  >ass="sref">acctup_read_structv/a> *vaup_read<" clt_lock" class="sref"since ibefore_jiffiesvsince icct.ive" class="sref">acf=tv/a>); acf=ap_se=tv/a>);   80v/a>   81v/a>vspa
 class5="com58code=#L104" idioL104" class="l5e" namtio5L82">  82v/a>vspa
 class5="com582> acsighanda>; acsig_unlockv/a>(&va ig_unlcodepc#L104" idioL104" class="l5e" namtio5L83">  83v/a>vspa
 class5="com583ode=spin_loc tatk" class="sref"group_deadstruct va href=group_deadcodep#L100" idioL100" class="l5e" namtio5L84">  84v/a>vspa
 class5="com58f="+code=act".3"
	  >ass="sref">acctpv/a>, struct va hrepf="+codeive" class="sref"df_ac_me=tv/a>); acctvsize, struct va hrevsizecode / 1024c#L104" idioL104" class="l5e" namtio5L85">  85v/a>vspa
 class5="com585ode=spin_loc tatk" class="sref"/9read_group_lehcerbefore_jiffiesv/9read_group_lehcer<" clock" class="sresince ibefore_jiffiesvsince icct.)c8c#L87" idioL87" class="lin5e" namtio5L86">  86v/a>struct va h5ref="58a> ass="sref">acctpv/a>, struct va hrepf="+codeive" class="sref"df_ac_exitf"dfa>; acctexitf"dfa>;   87v/a>        int5     587>  tatk" class="sref"since ibefore_jiffiesvsince icct.ive" class="sref">acflag struct va href=flag code a> acctPF_FORKNOEXECtv/a>);   18v/a>vspa
 class5"va h588> .3"
	  >ass="sref">acctpv/a>, struct va hrepf="+codeive" class="sref"df_ac_flaga>; acctAFORKa>;   89v/a>        str5uct v58code=res" cla}#L112" idioL112" class="l5e" namtio5L90">  90v/a>        str5uct v590> acflag struct va href=flag code a> acctPF_SUPERPRIVtv/a>);   91v/a>        str5uct v59to va href="+code=outsss="sref">acctpv/a>, struct va hrepf="+codeive" class="sref"df_ac_flaga>; acctASUa>;   92v/a>};  acflag struct va href=flag code a> acctPF_DUMPCORE, struct va hrePF_DUMPCOREcodep#L100" idioL100" class="l5e" namtio5L93">  93v/a> ss="sref">actv/pv/a>, struct va hrepf="+codeive" class="sref"df_ac_flaga>; acctACORE, struct va hreACOREcodec#L104" idioL104" class="l5e" namtio5L94">  94v/a>static va h5ref="59s="comment">/ tatk" class="sref"since ibefore_jiffiesvsince icct.ive" class="sref">acflag struct va href=flag code a> acctPF_SIGNALEDtv/a>);   95v/a>static va h5ref="595> *" class="sref"pv/a>, struct va hrepf="+codeive" class="sref"df_ac_flaga>; acctAXSIG, struct va hreAXSIGcodec#L104" idioL104" class="l5e" namtio5L96">  96v/a> u64v/pv/a>, struct va hrepf="+codeive" class="sref">acac_utiv/a>; acctsince ibefore_jiffiesvsince icct.ive" class="sref">acutiv/a>;   97v/a>vspa
 class5="com597ode=spin_unlock" class="srepv/a>, struct va hrepf="+codeive" class="sref"df_ac_stiv/a>; acctsince ibefore_jiffiesvsince icct.ive" class="sref">acstiv/a>;   98v/a>vspa
 class5="com59code=spin_lock" class="sref"pv/a>, struct va hrepf="+codeive" class="sref"df_ac_minflstv/a>); acctsince ibefore_jiffiesvsince icct.ive" class="sref">acmin_flstv/a>);   19v/a>vspa
 class5"ct v59code=res" class="sref">resv/pv/a>, struct va hrepf="+codeive" class="sref"df_ac_majflstv/a>); acctsince ibefore_jiffiesvsince icct.ive" class="sref">acmaj_flstv/a>);  100v/a>static int6va hr600> acsighanda>; acsig_unlockv/a>(&va ig_unlcodepc#L104" idioL104" class="l6ne" namti6L101"> 101v/a>{   92v/a>};   93v/a> filepef">pid_namtspacev/a> *va href="+code=ns" class="sref">nsv/a>, struct va href="+codep#L100" idioL100" class="l6n4" namti6L94">  94v/a>static va h6 va h6ef="+cc#L87" idioL87" class="lin6n5" namti6L95">  95v/a>static va h6href=605> filev/a>) nsv/a>v/a>) acctNULL)   96v/a> file"sref">bsd_acct_structv/a> *va href="+code=acct" class="sref">acctv/a>, struct va href="+codec#L104" idioL104" class="l6n7" namti6L97">  97v/a>vspa
 class6ernel607ode=#L104" idioL104" class="l6n8" namti6L98">  98v/a>vspa
 class6href=60code=spin_lock" class="sref"f=a>, struct va href="+code class="sref">acct> struct va href="+codeive" class="sref">acbf=a>, struct va hrebf="+codec#L104" idioL104" class="l6n9" namti6L19">  19v/a>vspa
 class6href=609="+code=res"s May block */v/spa
	  110v/a>        if6(!va 61nt"> *v/spa
	  111v/a>          6     61nt"> *      Oh, fsck... Oopsssssssss*l/acct.c#L100" idioL100" class="l6n2" namti6L112"> 112v/a>        va6href=612> kf=a>, struct va href="+code || ! class="sref">kf=a>, struct va href="+codeive" class="sref">acf/a>)  113v/a> returnc#L104" idioL104" class="l6n4" namti6L114"> 114v/a>        vs6a
 cl614>  115v/a>        if6(va h615>   b26v3.1"61code=u64" class="sref">u64v/f/a>) acctf=a>, struct va href="+codeive" class="sref">acf/a>)   17v/a>vspa
 class6="com617ode=spin_unl tatk" class="sref"in_ikely_structv/a> *vain_ikely<" cl! class="sref">kv/a>)   18v/a>vspa
 class6="com618> k" class="sref"sef="in_unla>;   19v/a>vspa
 class6="com619="+code=act".3"
	  >returnc#L104" idioL104" class="l6e" namtio6L20">  23.1a>vspa
 class6="com620>   21v/a>vspa
 class6="com621ode=spin_lock" class="sref"get_f/a>)   12v/a>vspa
 class6"ref=622>   23v/a>vspa
 class6="com623ode=#L104" idioL104" class="l6e4" namti6L24">  24v/a>vspa
 class6="com62s="comment">/*" class="sref"do_f="+cref="+ca>; file, struct va href="+code,lass="sref">filev/a>)   25v/a>vspa
 class6="com625> , struct va hrefpu><" clock" class="srev/a>)   26v/a>vspa
 class6="com62cct.c}#L112" idioL112" class="l6e7" namti6L27">  27v/a>vspa
 class6="com627ode=#L104" idioL104" class="l6e8" namti6L28">  28v/a>vspa
 class6="com62nt"> * Check the amount of /*a/acct.c#L100" idioL100" class="l6ee" namti6L29">  29v/a>vspa
 class6="com62nt"> */v/spa
	   33.1a>vspa
 class6="com63nt"> *v/spa
	   31v/a>vspa
 class6="com63nt"> *      Oh, fsck... Oopsa/acct.c#L100" idioL100" class="l6ee" namti6L32">  32v/a>vspa
 class6="com63nt"> * This structure is used handlesfref="+c ahe time defor an corde detask/acct.c#L100" idioL100" class="l6ee" namti6L33">  33v/a>vspa
 class6="com63nt"> * ca
 be placed in the sl/acct.c#L100" idioL100" class="l6e4" namti6L34">  34v/a>vspa
 class6="com63s="co href="+code=activ5nf="+cref="+cstruct va href=f="+cref="+c<" cl hrec#L104" idioL104" class="l6ee" namti6 deadlocks. Later. BTW, 6="com635>   36v/a>vspa
 class6="com636> filepef">pid_namtspacev/a> *va href="+code=ns" class="sref">nsv/a>, struct va href="+codec#L104" idioL104" class="l6e" namtio6L37">  37v/a>vspa
 class6="com637ode=#L104" idioL104" class="l6ee" namti6L38">  38v/a>vspa
 class6="com638>   39v/a>vspa
 class6="com63nt"> */v/spa
	   43.1a>vspa
 class6="com64nt"> *v/spa
	 whichdin  41v/a>vspa
 class6="com64nt"> *      Oh, fsck... Oopsssssssss* its pace i./acct.c#L98" idioL98" class="lin6e" namtio6L42">  42v/a>vspa
 class6="com64nt"> * This structure is usessssssss*l/acct.c#L100" idioL100" class="l6e" namtio6L43">  43v/a>vspa
 class6="com643> accttask_active_ref="_before_jiffiesvtask_active_ref="_<" clock" class="sresince ibefore_jiffiesvsince icct.)alass="sref">acct, struct va href="+code !class="sref">acctNULL) acct, struct va href="+code class="sref">acct> struct va href="+codeive" class="sref">acpace ibefore_jiffiesvpace icodep#L100" idioL100" class="l6e4" namti6L44">  44v/a>vspa
 class6="com64f="+code=act".3"
	  >ss="sref">actv/v/"+cref="+c_f=", struct va href=f="+cref="+c_f=", <" cls="sref">nsv/a>, struct va href="+codepc#L104" idioL104" class="l6ee" namti6L45">  45v/a>  }#L112" idioL112" class="l6ee" namti6L46">  46v/a>#include &l6t;


46v/footer"> The original LXR softwarevby hrefL112" idihttp://sourceforge.net/projects/lxr">LXR ure unitycode,ath daexperi is al verseoueby L112" idimailto:lxr@a>#ux.no">lxr@a>#ux.nocode. 46v/subfooter"> lxr.a>#ux.no kindlylhostedeby L112" idihttp://www.redpill-a>#pro.no">Redpill L>#pro AScode,aprovider of L>#uxamousulde detnd opdrameoudaservi="+lsincea1995.