< prev index next >

src/hotspot/os/posix/os_posix.cpp

Print this page
rev 52472 : 8211326: add OS user related information to hs_err file

@@ -35,10 +35,12 @@
 #include "utilities/macros.hpp"
 #include "utilities/vmError.hpp"
 
 #include <dirent.h>
 #include <dlfcn.h>
+#include <grp.h>
+#include <pwd.h>
 #include <pthread.h>
 #include <signal.h>
 #include <sys/mman.h>
 #include <sys/resource.h>
 #include <sys/utsname.h>

@@ -439,10 +441,42 @@
   st->print("%s ", name.version);
   st->print("%s", name.machine);
   st->cr();
 }
 
+void os::Posix::print_umask(outputStream* st, mode_t umsk) {
+  st->print((umsk & S_IRUSR) ? "r" : "-");
+  st->print((umsk & S_IWUSR) ? "w" : "-");
+  st->print((umsk & S_IXUSR) ? "x" : "-");
+  st->print((umsk & S_IRGRP) ? "r" : "-");
+  st->print((umsk & S_IWGRP) ? "w" : "-");
+  st->print((umsk & S_IXGRP) ? "x" : "-");
+  st->print((umsk & S_IROTH) ? "r" : "-");
+  st->print((umsk & S_IWOTH) ? "w" : "-");
+  st->print((umsk & S_IXOTH) ? "x" : "-");
+}
+
+void os::Posix::print_user_info(outputStream* st) {
+  uid_t id = ::getuid();
+  st->print("uid  : %u ", (unsigned) id);
+  id = ::geteuid();
+  st->print("euid : %u ", (unsigned) id);
+  id = ::getgid();
+  st->print("gid  : %u ", (unsigned) id);
+  id = ::getegid();
+  st->print_cr("egid : %u", (unsigned) id);
+  st->cr();
+
+  mode_t umsk = ::umask(0);
+  ::umask(umsk);
+  st->print("umask: %04o (", (unsigned) umsk);
+  print_umask(st, umsk);
+  st->print_cr(")");
+  st->cr();
+}
+
+
 bool os::get_host_name(char* buf, size_t buflen) {
   struct utsname name;
   uname(&name);
   jio_snprintf(buf, buflen, "%s", name.nodename);
   return true;
< prev index next >