Deleted Added
full compact
sh.time.c (100616) sh.time.c (145479)
1/* $Header: /src/pub/tcsh/sh.time.c,v 3.25 2002/06/25 19:02:11 christos Exp $ */
1/* $Header: /src/pub/tcsh/sh.time.c,v 3.28 2005/03/03 16:49:16 kim Exp $ */
2/*
3 * sh.time.c: Shell time keeping and printing.
4 */
5/*-
6 * Copyright (c) 1980, 1991 The Regents of the University of California.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without

--- 17 unchanged lines hidden (view full) ---

27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33#include "sh.h"
34
2/*
3 * sh.time.c: Shell time keeping and printing.
4 */
5/*-
6 * Copyright (c) 1980, 1991 The Regents of the University of California.
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without

--- 17 unchanged lines hidden (view full) ---

27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 */
33#include "sh.h"
34
35RCSID("$Id: sh.time.c,v 3.25 2002/06/25 19:02:11 christos Exp $")
35RCSID("$Id: sh.time.c,v 3.28 2005/03/03 16:49:16 kim Exp $")
36
37#ifdef SUNOS4
38# include <machine/param.h>
39#endif /* SUNOS4 */
40
41/*
42 * C Shell - routines handling process timing and niceing
43 */

--- 111 unchanged lines hidden (view full) ---

155}
156
157/*
158 * donice is only called when it on the line by itself or with a +- value
159 */
160/*ARGSUSED*/
161void
162donice(v, c)
36
37#ifdef SUNOS4
38# include <machine/param.h>
39#endif /* SUNOS4 */
40
41/*
42 * C Shell - routines handling process timing and niceing
43 */

--- 111 unchanged lines hidden (view full) ---

155}
156
157/*
158 * donice is only called when it on the line by itself or with a +- value
159 */
160/*ARGSUSED*/
161void
162donice(v, c)
163 register Char **v;
163 Char **v;
164 struct command *c;
165{
164 struct command *c;
165{
166 register Char *cp;
166 Char *cp;
167 int nval = 0;
168
169 USE(c);
170 v++, cp = *v++;
171 if (cp == 0)
172 nval = 4;
173 else if (*v == 0 && any("+-", cp[0]))
174 nval = getn(cp);
167 int nval = 0;
168
169 USE(c);
170 v++, cp = *v++;
171 if (cp == 0)
172 nval = 4;
173 else if (*v == 0 && any("+-", cp[0]))
174 nval = getn(cp);
175#ifdef BSDNICE
175#ifdef HAVE_SETPRIORITY
176 if (setpriority(PRIO_PROCESS, 0, nval) == -1 && errno)
177 stderror(ERR_SYSTEM, "setpriority", strerror(errno));
176 if (setpriority(PRIO_PROCESS, 0, nval) == -1 && errno)
177 stderror(ERR_SYSTEM, "setpriority", strerror(errno));
178#else /* BSDNICE */
178#else /* !HAVE_SETPRIORITY */
179 (void) nice(nval);
179 (void) nice(nval);
180#endif /* BSDNICE */
180#endif /* HAVE_SETPRIORITY */
181}
182
183#ifdef BSDTIMES
184void
185ruadd(ru, ru2)
181}
182
183#ifdef BSDTIMES
184void
185ruadd(ru, ru2)
186 register struct sysrusage *ru, *ru2;
186 struct sysrusage *ru, *ru2;
187{
188 tvadd(&ru->ru_utime, &ru2->ru_utime);
189 tvadd(&ru->ru_stime, &ru2->ru_stime);
187{
188 tvadd(&ru->ru_utime, &ru2->ru_utime);
189 tvadd(&ru->ru_stime, &ru2->ru_stime);
190#ifndef _OSD_POSIX
190 if (ru2->ru_maxrss > ru->ru_maxrss)
191 ru->ru_maxrss = ru2->ru_maxrss;
192
193 ru->ru_ixrss += ru2->ru_ixrss;
194 ru->ru_idrss += ru2->ru_idrss;
195 ru->ru_isrss += ru2->ru_isrss;
196 ru->ru_minflt += ru2->ru_minflt;
197 ru->ru_majflt += ru2->ru_majflt;
198 ru->ru_nswap += ru2->ru_nswap;
199 ru->ru_inblock += ru2->ru_inblock;
200 ru->ru_oublock += ru2->ru_oublock;
201 ru->ru_msgsnd += ru2->ru_msgsnd;
202 ru->ru_msgrcv += ru2->ru_msgrcv;
203 ru->ru_nsignals += ru2->ru_nsignals;
204 ru->ru_nvcsw += ru2->ru_nvcsw;
205 ru->ru_nivcsw += ru2->ru_nivcsw;
191 if (ru2->ru_maxrss > ru->ru_maxrss)
192 ru->ru_maxrss = ru2->ru_maxrss;
193
194 ru->ru_ixrss += ru2->ru_ixrss;
195 ru->ru_idrss += ru2->ru_idrss;
196 ru->ru_isrss += ru2->ru_isrss;
197 ru->ru_minflt += ru2->ru_minflt;
198 ru->ru_majflt += ru2->ru_majflt;
199 ru->ru_nswap += ru2->ru_nswap;
200 ru->ru_inblock += ru2->ru_inblock;
201 ru->ru_oublock += ru2->ru_oublock;
202 ru->ru_msgsnd += ru2->ru_msgsnd;
203 ru->ru_msgrcv += ru2->ru_msgrcv;
204 ru->ru_nsignals += ru2->ru_nsignals;
205 ru->ru_nvcsw += ru2->ru_nvcsw;
206 ru->ru_nivcsw += ru2->ru_nivcsw;
207#endif /*bs2000*/
206
207# ifdef convex
208 tvadd(&ru->ru_exutime, &ru2->ru_exutime);
209 ru->ru_utotal += ru2->ru_utotal;
210 ru->ru_usamples += ru2->ru_usamples;
211 ru->ru_stotal += ru2->ru_stotal;
212 ru->ru_ssamples += ru2->ru_ssamples;
213# endif /* convex */
214}
215
216#else /* BSDTIMES */
217# ifdef _SEQUENT_
218void
219ruadd(ru, ru2)
208
209# ifdef convex
210 tvadd(&ru->ru_exutime, &ru2->ru_exutime);
211 ru->ru_utotal += ru2->ru_utotal;
212 ru->ru_usamples += ru2->ru_usamples;
213 ru->ru_stotal += ru2->ru_stotal;
214 ru->ru_ssamples += ru2->ru_ssamples;
215# endif /* convex */
216}
217
218#else /* BSDTIMES */
219# ifdef _SEQUENT_
220void
221ruadd(ru, ru2)
220 register struct process_stats *ru, *ru2;
222 struct process_stats *ru, *ru2;
221{
222 tvadd(&ru->ps_utime, &ru2->ps_utime);
223 tvadd(&ru->ps_stime, &ru2->ps_stime);
224 if (ru2->ps_maxrss > ru->ps_maxrss)
225 ru->ps_maxrss = ru2->ps_maxrss;
226
227 ru->ps_pagein += ru2->ps_pagein;
228 ru->ps_reclaim += ru2->ps_reclaim;

--- 55 unchanged lines hidden (view full) ---

284# define IADJUST(i) (((i) << 10) / CLK_TCK * 100)
285# else /* convex */
286# define IADJUST(i) (i)
287# endif /* convex */
288#endif /* SUNOS4 */
289
290void
291prusage(r0, r1, e, b)
223{
224 tvadd(&ru->ps_utime, &ru2->ps_utime);
225 tvadd(&ru->ps_stime, &ru2->ps_stime);
226 if (ru2->ps_maxrss > ru->ps_maxrss)
227 ru->ps_maxrss = ru2->ps_maxrss;
228
229 ru->ps_pagein += ru2->ps_pagein;
230 ru->ps_reclaim += ru2->ps_reclaim;

--- 55 unchanged lines hidden (view full) ---

286# define IADJUST(i) (((i) << 10) / CLK_TCK * 100)
287# else /* convex */
288# define IADJUST(i) (i)
289# endif /* convex */
290#endif /* SUNOS4 */
291
292void
293prusage(r0, r1, e, b)
292 register struct sysrusage *r0, *r1;
294 struct sysrusage *r0, *r1;
293 timeval_t *e, *b;
294
295#else /* BSDTIMES */
296# ifdef _SEQUENT_
297void
298prusage(r0, r1, e, b)
295 timeval_t *e, *b;
296
297#else /* BSDTIMES */
298# ifdef _SEQUENT_
299void
300prusage(r0, r1, e, b)
299 register struct process_stats *r0, *r1;
301 struct process_stats *r0, *r1;
300 timeval_t *e, *b;
301
302# else /* _SEQUENT_ */
303void
304prusage(bs, es, e, b)
305 struct tms *bs, *es;
306
307# ifndef POSIX
308 time_t e, b;
309
310# else /* POSIX */
311 clock_t e, b;
312
313# endif /* POSIX */
314# endif /* _SEQUENT_ */
315#endif /* BSDTIMES */
316{
317#ifdef BSDTIMES
302 timeval_t *e, *b;
303
304# else /* _SEQUENT_ */
305void
306prusage(bs, es, e, b)
307 struct tms *bs, *es;
308
309# ifndef POSIX
310 time_t e, b;
311
312# else /* POSIX */
313 clock_t e, b;
314
315# endif /* POSIX */
316# endif /* _SEQUENT_ */
317#endif /* BSDTIMES */
318{
319#ifdef BSDTIMES
318 register time_t t =
320 time_t t =
319 (r1->ru_utime.tv_sec - r0->ru_utime.tv_sec) * 100 +
320 (r1->ru_utime.tv_usec - r0->ru_utime.tv_usec) / 10000 +
321 (r1->ru_stime.tv_sec - r0->ru_stime.tv_sec) * 100 +
322 (r1->ru_stime.tv_usec - r0->ru_stime.tv_usec) / 10000;
323
324#else
325# ifdef _SEQUENT_
321 (r1->ru_utime.tv_sec - r0->ru_utime.tv_sec) * 100 +
322 (r1->ru_utime.tv_usec - r0->ru_utime.tv_usec) / 10000 +
323 (r1->ru_stime.tv_sec - r0->ru_stime.tv_sec) * 100 +
324 (r1->ru_stime.tv_usec - r0->ru_stime.tv_usec) / 10000;
325
326#else
327# ifdef _SEQUENT_
326 register time_t t =
328 time_t t =
327 (r1->ps_utime.tv_sec - r0->ps_utime.tv_sec) * 100 +
328 (r1->ps_utime.tv_usec - r0->ps_utime.tv_usec) / 10000 +
329 (r1->ps_stime.tv_sec - r0->ps_stime.tv_sec) * 100 +
330 (r1->ps_stime.tv_usec - r0->ps_stime.tv_usec) / 10000;
331
332# else /* _SEQUENT_ */
333# ifndef POSIX
329 (r1->ps_utime.tv_sec - r0->ps_utime.tv_sec) * 100 +
330 (r1->ps_utime.tv_usec - r0->ps_utime.tv_usec) / 10000 +
331 (r1->ps_stime.tv_sec - r0->ps_stime.tv_sec) * 100 +
332 (r1->ps_stime.tv_usec - r0->ps_stime.tv_usec) / 10000;
333
334# else /* _SEQUENT_ */
335# ifndef POSIX
334 register time_t t = (es->tms_utime - bs->tms_utime +
336 time_t t = (es->tms_utime - bs->tms_utime +
335 es->tms_stime - bs->tms_stime) * 100 / HZ;
336
337# else /* POSIX */
337 es->tms_stime - bs->tms_stime) * 100 / HZ;
338
339# else /* POSIX */
338 register clock_t t = (es->tms_utime - bs->tms_utime +
340 clock_t t = (es->tms_utime - bs->tms_utime +
339 es->tms_stime - bs->tms_stime) * 100 / clk_tck;
340
341# endif /* POSIX */
342# endif /* _SEQUENT_ */
343#endif /* BSDTIMES */
344
341 es->tms_stime - bs->tms_stime) * 100 / clk_tck;
342
343# endif /* POSIX */
344# endif /* _SEQUENT_ */
345#endif /* BSDTIMES */
346
345 register char *cp;
346 register long i;
347 register struct varent *vp = adrof(STRtime);
347 const char *cp;
348 long i;
349 struct varent *vp = adrof(STRtime);
348
349#ifdef BSDTIMES
350# ifdef convex
351 static struct system_information sysinfo;
352 long long memtmp; /* let memory calculations exceede 2Gb */
353# endif /* convex */
354 int ms = (int)
355 ((e->tv_sec - b->tv_sec) * 100 + (e->tv_usec - b->tv_usec) / 10000);

--- 100 unchanged lines hidden (view full) ---

456#else /* convex */
457 i = (ms == 0) ? 0 : (long)(t * 1000.0 / ms);
458#endif /* convex */
459 xprintf("%ld.%01ld%%", i / 10, i % 10); /* nn.n% */
460 break;
461
462#ifdef BSDTIMES
463 case 'W': /* number of swaps */
350
351#ifdef BSDTIMES
352# ifdef convex
353 static struct system_information sysinfo;
354 long long memtmp; /* let memory calculations exceede 2Gb */
355# endif /* convex */
356 int ms = (int)
357 ((e->tv_sec - b->tv_sec) * 100 + (e->tv_usec - b->tv_usec) / 10000);

--- 100 unchanged lines hidden (view full) ---

458#else /* convex */
459 i = (ms == 0) ? 0 : (long)(t * 1000.0 / ms);
460#endif /* convex */
461 xprintf("%ld.%01ld%%", i / 10, i % 10); /* nn.n% */
462 break;
463
464#ifdef BSDTIMES
465 case 'W': /* number of swaps */
466#ifdef _OSD_POSIX
467 i = 0;
468#else
464 i = r1->ru_nswap - r0->ru_nswap;
469 i = r1->ru_nswap - r0->ru_nswap;
470#endif
465 xprintf("%ld", i);
466 break;
467
468#ifdef convex
469 case 'X': /* (average) shared text size */
470 memtmp = (t == 0 ? 0LL : IADJUST((long long)r1->ru_ixrss -
471 (long long)r0->ru_ixrss) /
472 (long long)t);

--- 17 unchanged lines hidden (view full) ---

490 ((long long)r0->ru_ixrss +
491 (long long)r0->ru_idrss +
492 (long long)r0->ru_isrss)) /
493 (long long)t);
494 xprintf("%lu", (unsigned long)memtmp);
495 break;
496#else /* !convex */
497 case 'X': /* (average) shared text size */
471 xprintf("%ld", i);
472 break;
473
474#ifdef convex
475 case 'X': /* (average) shared text size */
476 memtmp = (t == 0 ? 0LL : IADJUST((long long)r1->ru_ixrss -
477 (long long)r0->ru_ixrss) /
478 (long long)t);

--- 17 unchanged lines hidden (view full) ---

496 ((long long)r0->ru_ixrss +
497 (long long)r0->ru_idrss +
498 (long long)r0->ru_isrss)) /
499 (long long)t);
500 xprintf("%lu", (unsigned long)memtmp);
501 break;
502#else /* !convex */
503 case 'X': /* (average) shared text size */
504#ifdef _OSD_POSIX
505 xprintf("0",0);
506#else
498 xprintf("%ld", t == 0 ? 0L :
499 IADJUST(r1->ru_ixrss - r0->ru_ixrss) / t);
507 xprintf("%ld", t == 0 ? 0L :
508 IADJUST(r1->ru_ixrss - r0->ru_ixrss) / t);
509#endif
500 break;
501
502 case 'D': /* (average) unshared data size */
510 break;
511
512 case 'D': /* (average) unshared data size */
513#ifdef _OSD_POSIX
514 xprintf("0",0);
515#else
503 xprintf("%ld", t == 0 ? 0L :
504 IADJUST(r1->ru_idrss + r1->ru_isrss -
505 (r0->ru_idrss + r0->ru_isrss)) / t);
516 xprintf("%ld", t == 0 ? 0L :
517 IADJUST(r1->ru_idrss + r1->ru_isrss -
518 (r0->ru_idrss + r0->ru_isrss)) / t);
519#endif
506 break;
507
508 case 'K': /* (average) total data memory used */
520 break;
521
522 case 'K': /* (average) total data memory used */
523#ifdef _OSD_POSIX
524 xprintf("0",0);
525#else
509 xprintf("%ld", t == 0 ? 0L :
510 IADJUST((r1->ru_ixrss + r1->ru_isrss + r1->ru_idrss) -
511 (r0->ru_ixrss + r0->ru_idrss + r0->ru_isrss)) / t);
526 xprintf("%ld", t == 0 ? 0L :
527 IADJUST((r1->ru_ixrss + r1->ru_isrss + r1->ru_idrss) -
528 (r0->ru_ixrss + r0->ru_idrss + r0->ru_isrss)) / t);
529#endif
512 break;
513#endif /* convex */
514 case 'M': /* max. Resident Set Size */
515#ifdef SUNOS4
516 xprintf("%ld", pagetok(r1->ru_maxrss));
517#else
518# ifdef convex
519 xprintf("%ld", r1->ru_maxrss * 4L);
520# else /* !convex */
530 break;
531#endif /* convex */
532 case 'M': /* max. Resident Set Size */
533#ifdef SUNOS4
534 xprintf("%ld", pagetok(r1->ru_maxrss));
535#else
536# ifdef convex
537 xprintf("%ld", r1->ru_maxrss * 4L);
538# else /* !convex */
539# ifdef _OSD_POSIX
540 xprintf("0",0);
541# else
521 xprintf("%ld", r1->ru_maxrss / 2L);
542 xprintf("%ld", r1->ru_maxrss / 2L);
543# endif
522# endif /* convex */
523#endif /* SUNOS4 */
524 break;
525
526 case 'F': /* page faults */
544# endif /* convex */
545#endif /* SUNOS4 */
546 break;
547
548 case 'F': /* page faults */
549#ifdef _OSD_POSIX
550 xprintf("0",0);
551#else
527 xprintf("%ld", r1->ru_majflt - r0->ru_majflt);
552 xprintf("%ld", r1->ru_majflt - r0->ru_majflt);
553#endif
528 break;
529
530 case 'R': /* page reclaims */
554 break;
555
556 case 'R': /* page reclaims */
557#ifdef _OSD_POSIX
558 xprintf("0",0);
559#else
531 xprintf("%ld", r1->ru_minflt - r0->ru_minflt);
560 xprintf("%ld", r1->ru_minflt - r0->ru_minflt);
561#endif
532 break;
533
534 case 'I': /* FS blocks in */
562 break;
563
564 case 'I': /* FS blocks in */
565#ifdef _OSD_POSIX
566 xprintf("0",0);
567#else
535 xprintf("%ld", r1->ru_inblock - r0->ru_inblock);
568 xprintf("%ld", r1->ru_inblock - r0->ru_inblock);
569#endif
536 break;
537
538 case 'O': /* FS blocks out */
570 break;
571
572 case 'O': /* FS blocks out */
573#ifdef _OSD_POSIX
574 xprintf("0",0);
575#else
539 xprintf("%ld", r1->ru_oublock - r0->ru_oublock);
576 xprintf("%ld", r1->ru_oublock - r0->ru_oublock);
577#endif
540 break;
541
542# ifdef convex
543 case 'C': /* CPU parallelization factor */
544 if (r1->ru_usamples != 0LL) {
545 long long parr = ((r1->ru_utotal * 100LL) /
546 r1->ru_usamples);
547 xprintf("%d.%02d", (int)(parr/100), (int)(parr%100));
548 } else
549 xprintf("?");
550 break;
551# endif /* convex */
552 case 'r': /* PWP: socket messages recieved */
578 break;
579
580# ifdef convex
581 case 'C': /* CPU parallelization factor */
582 if (r1->ru_usamples != 0LL) {
583 long long parr = ((r1->ru_utotal * 100LL) /
584 r1->ru_usamples);
585 xprintf("%d.%02d", (int)(parr/100), (int)(parr%100));
586 } else
587 xprintf("?");
588 break;
589# endif /* convex */
590 case 'r': /* PWP: socket messages recieved */
591#ifdef _OSD_POSIX
592 xprintf("0",0);
593#else
553 xprintf("%ld", r1->ru_msgrcv - r0->ru_msgrcv);
594 xprintf("%ld", r1->ru_msgrcv - r0->ru_msgrcv);
595#endif
554 break;
555
556 case 's': /* PWP: socket messages sent */
596 break;
597
598 case 's': /* PWP: socket messages sent */
599#ifdef _OSD_POSIX
600 xprintf("0",0);
601#else
557 xprintf("%ld", r1->ru_msgsnd - r0->ru_msgsnd);
602 xprintf("%ld", r1->ru_msgsnd - r0->ru_msgsnd);
603#endif
558 break;
559
560 case 'k': /* PWP: signals received */
604 break;
605
606 case 'k': /* PWP: signals received */
607#ifdef _OSD_POSIX
608 xprintf("0",0);
609#else
561 xprintf("%ld", r1->ru_nsignals - r0->ru_nsignals);
610 xprintf("%ld", r1->ru_nsignals - r0->ru_nsignals);
611#endif
562 break;
563
564 case 'w': /* PWP: voluntary context switches (waits) */
612 break;
613
614 case 'w': /* PWP: voluntary context switches (waits) */
615#ifdef _OSD_POSIX
616 xprintf("0",0);
617#else
565 xprintf("%ld", r1->ru_nvcsw - r0->ru_nvcsw);
618 xprintf("%ld", r1->ru_nvcsw - r0->ru_nvcsw);
619#endif
566 break;
567
568 case 'c': /* PWP: involuntary context switches */
620 break;
621
622 case 'c': /* PWP: involuntary context switches */
623#ifdef _OSD_POSIX
624 xprintf("0",0);
625#else
569 xprintf("%ld", r1->ru_nivcsw - r0->ru_nivcsw);
626 xprintf("%ld", r1->ru_nivcsw - r0->ru_nivcsw);
627#endif
570 break;
571#else /* BSDTIMES */
572# ifdef _SEQUENT_
573 case 'W': /* number of swaps */
574 i = r1->ps_swap - r0->ps_swap;
575 xprintf("%ld", i);
576 break;
577

--- 132 unchanged lines hidden ---
628 break;
629#else /* BSDTIMES */
630# ifdef _SEQUENT_
631 case 'W': /* number of swaps */
632 i = r1->ps_swap - r0->ps_swap;
633 xprintf("%ld", i);
634 break;
635

--- 132 unchanged lines hidden ---