.. | .. |
---|
138 | 138 | struct thread_info *ti = task_thread_info(tsk); |
---|
139 | 139 | __u64 stime = vtime_delta(tsk); |
---|
140 | 140 | |
---|
141 | | - if (tsk->flags & PF_VCPU) |
---|
| 141 | + if ((tsk->flags & PF_VCPU) && !irq_count()) |
---|
142 | 142 | ti->gtime += stime; |
---|
| 143 | + else if (hardirq_count()) |
---|
| 144 | + ti->hardirq_time += stime; |
---|
| 145 | + else if (in_serving_softirq()) |
---|
| 146 | + ti->softirq_time += stime; |
---|
143 | 147 | else |
---|
144 | 148 | ti->stime += stime; |
---|
145 | 149 | } |
---|
.. | .. |
---|
150 | 154 | struct thread_info *ti = task_thread_info(tsk); |
---|
151 | 155 | |
---|
152 | 156 | ti->idle_time += vtime_delta(tsk); |
---|
153 | | -} |
---|
154 | | - |
---|
155 | | -void vtime_account_softirq(struct task_struct *tsk) |
---|
156 | | -{ |
---|
157 | | - struct thread_info *ti = task_thread_info(tsk); |
---|
158 | | - |
---|
159 | | - ti->softirq_time += vtime_delta(tsk); |
---|
160 | | -} |
---|
161 | | - |
---|
162 | | -void vtime_account_hardirq(struct task_struct *tsk) |
---|
163 | | -{ |
---|
164 | | - struct thread_info *ti = task_thread_info(tsk); |
---|
165 | | - |
---|
166 | | - ti->hardirq_time += vtime_delta(tsk); |
---|
167 | 157 | } |
---|
168 | 158 | |
---|
169 | 159 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ |
---|