< prev index next >

src/java.base/linux/native/libjava/ProcessHandleImpl_linux.c

Print this page
rev 52679 : 8214077: test java/io/File/SetLastModified.java fails on ARM32
Summary: replace uses of stat with stat64 in java.base
Reviewed-by: duke
Contributed-by: nick.gasson@arm.com

Jira: ENTLLT-1484
Change-Id: I7eb190fdc1f60db7cc13327eb2e9fe233063ffd1


 121     // utime (14), stime(15), starttime(22)
 122     if (4 != sscanf(s, " %*c %d %*d %*d %*d %*d %*d %*u %*u %*u %*u %lu %lu %*d %*d %*d %*d %*d %*d %llu",
 123             &parentPid, &utime, &stime, &start)) {
 124         return 0;              // not all values parsed; return error
 125     }
 126 
 127     *totalTime = (utime + stime) * (jlong)(1000000000 / clock_ticks_per_second);
 128 
 129     *startTime = bootTime_ms + ((start * 1000) / clock_ticks_per_second);
 130 
 131     return parentPid;
 132 }
 133 
 134 void os_getCmdlineAndUserInfo(JNIEnv *env, jobject jinfo, pid_t pid) {
 135     int fd;
 136     int cmdlen = 0;
 137     char *cmdline = NULL, *cmdEnd = NULL; // used for command line args and exe
 138     char *args = NULL;
 139     jstring cmdexe = NULL;
 140     char fn[32];
 141     struct stat stat_buf;
 142 
 143     /*
 144      * Stat /proc/<pid> to get the user id
 145      */
 146     snprintf(fn, sizeof fn, "/proc/%d", pid);
 147     if (stat(fn, &stat_buf) == 0) {
 148         unix_getUserInfo(env, jinfo, stat_buf.st_uid);
 149         JNU_CHECK_EXCEPTION(env);
 150     }
 151 
 152     /*
 153      * Try to open /proc/<pid>/cmdline
 154      */
 155     strncat(fn, "/cmdline", sizeof fn - strnlen(fn, sizeof fn) - 1);
 156     if ((fd = open(fn, O_RDONLY)) < 0) {
 157         return;
 158     }
 159 
 160     do {                // Block to break out of on errors
 161         int i, truncated = 0;
 162         int count;
 163         char *s;
 164 
 165         /*
 166          * The path name read by readlink() is limited to PATH_MAX characters.
 167          * The content of /proc/<pid>/cmdline is limited to PAGE_SIZE characters.




 121     // utime (14), stime(15), starttime(22)
 122     if (4 != sscanf(s, " %*c %d %*d %*d %*d %*d %*d %*u %*u %*u %*u %lu %lu %*d %*d %*d %*d %*d %*d %llu",
 123             &parentPid, &utime, &stime, &start)) {
 124         return 0;              // not all values parsed; return error
 125     }
 126 
 127     *totalTime = (utime + stime) * (jlong)(1000000000 / clock_ticks_per_second);
 128 
 129     *startTime = bootTime_ms + ((start * 1000) / clock_ticks_per_second);
 130 
 131     return parentPid;
 132 }
 133 
 134 void os_getCmdlineAndUserInfo(JNIEnv *env, jobject jinfo, pid_t pid) {
 135     int fd;
 136     int cmdlen = 0;
 137     char *cmdline = NULL, *cmdEnd = NULL; // used for command line args and exe
 138     char *args = NULL;
 139     jstring cmdexe = NULL;
 140     char fn[32];
 141     struct stat64 stat_buf;
 142 
 143     /*
 144      * Stat /proc/<pid> to get the user id
 145      */
 146     snprintf(fn, sizeof fn, "/proc/%d", pid);
 147     if (stat64(fn, &stat_buf) == 0) {
 148         unix_getUserInfo(env, jinfo, stat_buf.st_uid);
 149         JNU_CHECK_EXCEPTION(env);
 150     }
 151 
 152     /*
 153      * Try to open /proc/<pid>/cmdline
 154      */
 155     strncat(fn, "/cmdline", sizeof fn - strnlen(fn, sizeof fn) - 1);
 156     if ((fd = open(fn, O_RDONLY)) < 0) {
 157         return;
 158     }
 159 
 160     do {                // Block to break out of on errors
 161         int i, truncated = 0;
 162         int count;
 163         char *s;
 164 
 165         /*
 166          * The path name read by readlink() is limited to PATH_MAX characters.
 167          * The content of /proc/<pid>/cmdline is limited to PAGE_SIZE characters.


< prev index next >