All Downloads are FREE. Search and download functionalities are using the official Maven repository.

oshi.software.os.mac.MacProcess Maven / Gradle / Ivy

There is a newer version: 3.4.0
Show newest version
/**
 * Oshi (https://github.com/dblock/oshi)
 *
 * Copyright (c) 2010 - 2016 The Oshi Project Team
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Maintainers:
 * dblock[at]dblock[dot]org
 * widdis[at]gmail[dot]com
 * enrico.bianchi[at]gmail[dot]com
 *
 * Contributors:
 * https://github.com/dblock/oshi/graphs/contributors
 */
package oshi.software.os.mac;

import oshi.software.common.AbstractProcess;
import oshi.software.os.OSProcess;

/**
 * A process is an instance of a computer program that is being executed. It
 * contains the program code and its current activity. Depending on the
 * operating system (OS), a process may be made up of multiple threads of
 * execution that execute instructions concurrently.
 *
 * @author widdis[at]gmail[dot]com
 */
public class MacProcess extends AbstractProcess {

    private static final long serialVersionUID = 2L;
    /*
     * OS X States:
     */
    private static final int SSLEEP = 1; // sleeping on high priority
    private static final int SWAIT = 2; // sleeping on low priority
    private static final int SRUN = 3; // running
    private static final int SIDL = 4; // intermediate state in process creation
    private static final int SZOMB = 5; // intermediate state in process
                                        // termination
    private static final int SSTOP = 6; // process being traced

    public MacProcess(String name, String path, int osXState, int processID, int parentProcessID, int threadCount,
            int priority, long virtualSize, long residentSetSize, long kernelTime, long userTime, long startTime,
            long bytesRead, long bytesWritten, long now) {
        this.name = name;
        this.path = path;
        switch (osXState) {
        case SSLEEP:
            this.state = OSProcess.State.SLEEPING;
            break;
        case SWAIT:
            this.state = OSProcess.State.WAITING;
            break;
        case SRUN:
            this.state = OSProcess.State.RUNNING;
            break;
        case SIDL:
            this.state = OSProcess.State.NEW;
            break;
        case SZOMB:
            this.state = OSProcess.State.ZOMBIE;
            break;
        case SSTOP:
            this.state = OSProcess.State.STOPPED;
            break;
        default:
            this.state = OSProcess.State.OTHER;
            break;
        }
        this.processID = processID;
        this.parentProcessID = parentProcessID;
        this.threadCount = threadCount;
        this.priority = priority;
        this.virtualSize = virtualSize;
        this.residentSetSize = residentSetSize;
        this.kernelTime = kernelTime;
        this.userTime = userTime;
        this.startTime = startTime;
        this.upTime = now - startTime;
        this.bytesRead = bytesRead;
        this.bytesWritten = bytesWritten;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy