Print this page


Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libproc/common/Pcontrol.c
          +++ new/usr/src/lib/libproc/common/Pcontrol.c
↓ open down ↓ 341 lines elided ↑ open up ↑
 342  342  #endif
 343  343  };
 344  344  
 345  345  /*
 346  346   * This is the library's .init handler.
 347  347   */
 348  348  #pragma init(_libproc_init)
 349  349  void
 350  350  _libproc_init(void)
 351  351  {
      352 +        const char *root;
      353 +
 352  354          _libproc_debug = getenv("LIBPROC_DEBUG") != NULL;
 353  355          _libproc_no_qsort = getenv("LIBPROC_NO_QSORT") != NULL;
 354  356          _libproc_incore_elf = getenv("LIBPROC_INCORE_ELF") != NULL;
 355  357  
      358 +        if ((root = zone_get_nroot()) != NULL)
      359 +                (void) snprintf(procfs_path, sizeof (procfs_path), "%s/proc",
      360 +                    root);
      361 +
 356  362          (void) sigfillset(&blockable_sigs);
 357  363          (void) sigdelset(&blockable_sigs, SIGKILL);
 358  364          (void) sigdelset(&blockable_sigs, SIGSTOP);
 359  365  }
 360  366  
 361  367  void
 362  368  Pset_procfs_path(const char *path)
 363  369  {
 364  370          (void) snprintf(procfs_path, sizeof (procfs_path), "%s", path);
 365  371  }
↓ open down ↓ 1425 lines elided ↑ open up ↑
1791 1797                  dprintf("%s: SYSEXIT %s\n", caller,
1792 1798                      proc_sysname(lsp->pr_what, name, sizeof (name)));
1793 1799                  break;
1794 1800          case PR_JOBCONTROL:
1795 1801                  dprintf("%s: JOBCONTROL %s\n", caller,
1796 1802                      proc_signame(lsp->pr_what, name, sizeof (name)));
1797 1803                  break;
1798 1804          case PR_SUSPENDED:
1799 1805                  dprintf("%s: SUSPENDED\n", caller);
1800 1806                  break;
     1807 +        case PR_BRAND:
     1808 +                dprintf("%s: BRANDPRIVATE (%d)\n", caller, lsp->pr_what);
     1809 +                break;
1801 1810          default:
1802 1811                  dprintf("%s: Unknown\n", caller);
1803 1812                  break;
1804 1813          }
1805 1814  
1806 1815          if (lsp->pr_cursig)
1807 1816                  dprintf("%s: p_cursig  = %d\n", caller, lsp->pr_cursig);
1808 1817  
1809 1818          bits = *((uint32_t *)&lsp->pr_lwppend);
1810 1819          if (bits)
↓ open down ↓ 159 lines elided ↑ open up ↑
1970 1979          case PR_SYSEXIT:
1971 1980                  if (Pissyscall_prev(P, P->status.pr_lwp.pr_reg[R_PC],
1972 1981                      &P->sysaddr) == 0)
1973 1982                          P->sysaddr = P->status.pr_lwp.pr_reg[R_PC];
1974 1983                  break;
1975 1984          case PR_REQUESTED:
1976 1985          case PR_SIGNALLED:
1977 1986          case PR_FAULTED:
1978 1987          case PR_JOBCONTROL:
1979 1988          case PR_SUSPENDED:
     1989 +        case PR_BRAND:
1980 1990                  break;
1981 1991          default:
1982 1992                  errno = EPROTO;
1983 1993                  return (-1);
1984 1994          }
1985 1995  
1986 1996          return (0);
1987 1997  }
1988 1998  
1989 1999  /*
↓ open down ↓ 1568 lines elided ↑ open up ↑
3558 3568                  prldump("Lstopstatus", &L->lwp_status);
3559 3569  
3560 3570          switch (L->lwp_status.pr_why) {
3561 3571          case PR_SYSENTRY:
3562 3572          case PR_SYSEXIT:
3563 3573          case PR_REQUESTED:
3564 3574          case PR_SIGNALLED:
3565 3575          case PR_FAULTED:
3566 3576          case PR_JOBCONTROL:
3567 3577          case PR_SUSPENDED:
     3578 +        case PR_BRAND:
3568 3579                  break;
3569 3580          default:
3570 3581                  errno = EPROTO;
3571 3582                  return (-1);
3572 3583          }
3573 3584  
3574 3585          return (0);
3575 3586  }
3576 3587  
3577 3588  /*
↓ open down ↓ 401 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX