| 378 | |
| 379 | |
| 380 | int register_processes_load_stats(int procs_no) |
| 381 | { |
| 382 | char *stat_name; |
| 383 | str stat_prefix; |
| 384 | char *pno_s; |
| 385 | str name; |
| 386 | int pno; |
| 387 | |
| 388 | group_stats *load_proc_grp, *load_proc_1m_grp, *load_proc_10m_grp; |
| 389 | |
| 390 | load_proc_grp = register_stats_group("proc_load"); |
| 391 | if (!load_proc_grp) { |
| 392 | LM_ERR("could not register stats group proc_load"); |
| 393 | return -1; |
| 394 | } |
| 395 | load_proc_1m_grp = register_stats_group("proc_load1m"); |
| 396 | if (!load_proc_1m_grp) { |
| 397 | LM_ERR("could not register stats group proc_load1m"); |
| 398 | return -1; |
| 399 | } |
| 400 | load_proc_10m_grp = register_stats_group("proc_load10m"); |
| 401 | if (!load_proc_10m_grp) { |
| 402 | LM_ERR("could not register stats group proc_load10m"); |
| 403 | return -1; |
| 404 | } |
| 405 | |
| 406 | /* build the stats and register them for each potential process |
| 407 | * skipp the attendant, id 0 */ |
| 408 | for( pno=1 ; pno<procs_no ; pno++) { |
| 409 | |
| 410 | pno_s = int2str( (unsigned int)pno, NULL); |
| 411 | |
| 412 | stat_prefix.s = "load-proc"; |
| 413 | stat_prefix.len = sizeof("load-proc")-1; |
| 414 | if ( (stat_name = build_stat_name( &stat_prefix, pno_s)) == 0 || |
| 415 | register_stat2( "load", stat_name, (stat_var**)pt_get_rt_proc_load, |
| 416 | STAT_IS_FUNC|STAT_PER_PROC, (void*)(long)pno, 0) != 0) { |
| 417 | LM_ERR("failed to add RT load stat for process %d\n",pno); |
| 418 | return -1; |
| 419 | } |
| 420 | name.s = stat_name; |
| 421 | name.len = strlen(stat_name); |
| 422 | pt[pno].load_rt = get_stat(&name); |
| 423 | pt[pno].load_rt->flags |= STAT_HIDDEN; |
| 424 | add_stats_group(load_proc_grp, pt[pno].load_rt); |
| 425 | |
| 426 | stat_prefix.s = "load1m-proc"; |
| 427 | stat_prefix.len = sizeof("load1m-proc")-1; |
| 428 | if ( (stat_name = build_stat_name( &stat_prefix, pno_s)) == 0 || |
| 429 | register_stat2( "load", stat_name, (stat_var**)pt_get_1m_proc_load, |
| 430 | STAT_IS_FUNC|STAT_PER_PROC, (void*)(long)pno, 0) != 0) { |
| 431 | LM_ERR("failed to add RT load stat for process %d\n",pno); |
| 432 | return -1; |
| 433 | } |
| 434 | name.s = stat_name; |
| 435 | name.len = strlen(stat_name); |
| 436 | pt[pno].load_1m = get_stat(&name); |
| 437 | pt[pno].load_1m->flags |= STAT_HIDDEN; |
no test coverage detected