diff options
Diffstat (limited to 'plugins/com.windriver.tcf.api/src/com/windriver/tcf/api/services/ISysMonitor.java')
-rw-r--r-- | plugins/com.windriver.tcf.api/src/com/windriver/tcf/api/services/ISysMonitor.java | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/plugins/com.windriver.tcf.api/src/com/windriver/tcf/api/services/ISysMonitor.java b/plugins/com.windriver.tcf.api/src/com/windriver/tcf/api/services/ISysMonitor.java new file mode 100644 index 000000000..f154c9c0e --- /dev/null +++ b/plugins/com.windriver.tcf.api/src/com/windriver/tcf/api/services/ISysMonitor.java @@ -0,0 +1,378 @@ +/******************************************************************************* + * Copyright (c) 2007 Wind River Systems, Inc. and others. + * 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 + * + * Contributors: + * Wind River Systems - initial API and implementation + *******************************************************************************/ +package com.windriver.tcf.api.services; + +import java.util.Map; + +import com.windriver.tcf.api.protocol.IService; +import com.windriver.tcf.api.protocol.IToken; + +/** + * This is optional service that can be implemented by a peer. + * If implemented, the service can be used for monitoring system activity and utilization. + * It provides list of running processes, different process attributes like command line, environment, etc., + * and some resource utilization data. The service can be used by a client to provide functionality + * similar to Unix 'top' utility or Windows 'Task Manager'. + */ +public interface ISysMonitor extends IService { + + static final String NAME = "SysMonitor"; + + /** + * Retrieve context info for given context ID. + * + * @param id – context ID. + * @param done - callback interface called when operation is completed. + */ + IToken getContext(String id, DoneGetContext done); + + /** + * Client callback interface for getContext(). + */ + interface DoneGetContext { + /** + * Called when context data retrieval is done. + * @param error – error description if operation failed, null if succeeded. + * @param context – context data. + */ + void doneGetContext(IToken token, Exception error, SysMonitorContext context); + } + + /** + * Retrieve children of given context. + * + * @param parent_context_id – parent context ID. Can be null – + * to retrieve top level of the hierarchy, or one of context IDs retrieved + * by previous getContext or getChildren commands. + * @param done - callback interface called when operation is completed. + */ + IToken getChildren(String parent_context_id, DoneGetChildren done); + + /** + * Client callback interface for getChildren(). + */ + interface DoneGetChildren { + /** + * Called when context list retrieval is done. + * @param error – error description if operation failed, null if succeeded. + * @param context_ids – array of available context IDs. + */ + void doneGetChildren(IToken token, Exception error, String[] context_ids); + } + + /** + * Context property names. + */ + static final String + /** The TCF context ID */ + PROP_ID = "ID", + + /** The TCF parent context ID */ + PROP_PARENTID = "ParentID", + + /** Current working directory of the process */ + PROP_CWD = "CWD", + + /** The process's root directory (as set by chroot) */ + PROP_ROOT = "Root", + + /** User ID of the process owner */ + PROP_UID = "UID", + + /** Group ID of the process owner */ + PROP_UGID = "UGID", + + /** User name of the process owner */ + PROP_USERNAME = "UserName", + + /** Group name of the process owner */ + PROP_GROUPNAME = "GroupName", + + /** System process ID */ + PROP_PID = "PID", + + /** Executable file of the process */ + PROP_FILE = "File", + + /** One character from the string "RSDZTW" where R is running, S is + * sleeping in an interruptible wait, D is waiting in uninterruptible + * disk sleep, Z is zombie, T is traced or stopped (on a signal), and W + * is paging.*/ + PROP_STATE = "State", + + /** System ID of the parent process */ + PROP_PPID = "PPID", + + /** The process group ID of the process */ + PROP_PGRP = "PGRP", + + /** The session ID of the process */ + PROP_SESSION = "Session", + + /** The tty the process uses */ + PROP_TTY = "TTY", + + /** The process group ID of the process which currently owns the tty that + * the process is connected to. */ + PROP_TGID = "TGID", + + /** ID of a process that has attached this process for tracing or debugging */ + PROP_TRACERPID = "TracerPID", + + /** The kernel flags word of the process. Details depend on the kernel */ + PROP_FLAGS = "Flags", + + /** The number of minor faults the process has made which have not + * required loading a memory page from disk */ + PROP_MINFLT = "MinFlt", + + /** The number of minor faults that the process's waited-for children have made */ + PROP_CMINFLT = "CMinFlt", + + /** The number of major faults the process has made which have required + * loading a memory page from disk */ + PROP_MAJFLT = "MajFlt", + + /** The number of major faults that the process's waited-for children + * have made */ + PROP_CMAJFLT = "CMajFlt", + + /** The number of milliseconds that this process has been scheduled in user mode */ + PROP_UTIME = "UTime", + + /** The number of milliseconds that this process has been scheduled in kernel mode */ + PROP_STIME = "STime", + + /** The number of jiffies that this process's waited-for children have + * been scheduled in user mode */ + PROP_CUTIME = "CUTime", + + /** The number of jiffies that this process's waited-for children have + * been scheduled in user mode */ + PROP_CSTIME = "CSTime", + + /** The standard nice value */ + PROP_PRIORITY = "Priority", + + /** The nice value */ + PROP_NICE = "Nice", + + /** The time in milliseconds before the next SIGALRM is sent to the process + * due to an interval timer */ + PROP_ITREALVALUE = "ITRealValue", + + /** The time in milliseconds the process started after system boot */ + PROP_STARTTIME = "StartTime", + + /** Virtual memory size in bytes */ + PROP_VSIZE = "VSize", + + /** Memory pages size in bytes */ + PROP_PSIZE = "PSize", + + /** Resident Set Size: number of pages the process has in real memory, + * minus used for administrative purposes. This is just the pages which + * count towards text, data, or stack space. This does not include + * pages which have not been demand-loaded in, or which are swapped out */ + PROP_RSS = "RSS", + + /** Current limit in bytes on the rss of the process */ + PROP_RLIMIT = "RLimit", + + /** The address above which program text can run */ + PROP_CODESTART = "CodeStart", + + /** The address below which program text can run */ + PROP_CODEEND = "CodeEnd", + + /** The address of the start of the stack */ + PROP_STACKSTART = "StackStart", + + /** The bitmap of pending signals */ + PROP_SIGNALS = "Signals", + + /** The bitmap of blocked signals */ + PROP_SIGBLOCK = "SigBlock", + + /** The bitmap of ignored signals */ + PROP_SIGIGNORE = "SigIgnore", + + /** The bitmap of caught signals */ + PROP_SIGCATCH = "SigCatch", + + /** This is the "channel" in which the process is waiting. It is the + * address of a system call, and can be looked up in a name list if you + * need a textual name */ + PROP_WCHAN = "WChan", + + /** Number of pages swapped */ + PROP_NSWAP = "NSwap", + + /** Cumulative NSwap for child processes */ + PROP_CNSWAP = "CNSwap", + + /** Signal to be sent to parent when this process exits */ + PROP_EXITSIGNAL = "ExitSignal", + + /** CPU number last executed on */ + PROP_PROCESSOR = "Processor", + + /** Real-time scheduling priority */ + PROP_RTPRIORITY = "RTPriority", + + /** Scheduling policy */ + PROP_POLICY = "Policy"; + + + /** + * A context corresponds to an execution thread, process, address space, etc. + * A context can belong to a parent context. Contexts hierarchy can be simple + * plain list or it can form a tree. It is up to target agent developers to choose + * layout that is most descriptive for a given target. Context IDs are valid across + * all services. In other words, all services access same hierarchy of contexts, + * with same IDs, however, each service accesses its own subset of context's + * attributes and functionality, which is relevant to that service. + */ + interface SysMonitorContext { + + /** + * Get context ID. + * Same as getProperties().get(“ID”) + */ + String getID(); + + /** + * Get parent context ID. + * Same as getProperties().get(“ParentID”) + */ + String getParentID(); + + /** + * Get process group ID. + * Same as getProperties().get(“PGRP”) + */ + long getPGRP(); + + /** + * Get process ID. + * Same as getProperties().get(“PID”) + */ + long getPID(); + + /** + * Get process parent ID. + * Same as getProperties().get(“PPID”) + */ + long getPPID(); + + /** + * Get process TTY group ID. + * Same as getProperties().get(“TGID”) + */ + long getTGID(); + + /** + * Get tracer process ID. + * Same as getProperties().get(“TracerPID”) + */ + long getTracerPID(); + + /** + * Get process owner user ID. + * Same as getProperties().get(“UID”) + */ + long getUID(); + + /** + * Get process owner user name. + * Same as getProperties().get(“UserName”) + */ + String getUserName(); + + /** + * Get process owner user group ID. + * Same as getProperties().get(“UGID”) + */ + long getUGID(); + + /** + * Get process owner user group name. + * Same as getProperties().get(“GroupName”) + */ + String getGroupName(); + + /** + * Get process state. + * Same as getProperties().get(“State”) + */ + String getState(); + + /** + * Get process virtual memory size in bytes. + * Same as getProperties().get(“VSize”) + */ + long getVSize(); + + /** + * Get process virtual memory page size in bytes. + * Same as getProperties().get(“PSize”) + */ + long getPSize(); + + /** + * Get number of memory pages in process resident set. + * Same as getProperties().get(“RSS”) + */ + long getRSS(); + + /** + * Get context executable file. + * Same as getProperties().get(“File”) + */ + String getFile(); + + /** + * Get context current file system root. + * Same as getProperties().get(“Root”) + */ + String getRoot(); + + /** + * Get context current working directory. + * Same as getProperties().get(“CWD”) + */ + String getCurrentWorkingDirectory(); + + /** + * Get all available context properties. + * @return Map 'property name' -> 'property value' + */ + Map<String,Object> getProperties(); + } + + /** + * Get context command line. + */ + IToken getCommandLine(String id, DoneGetCommandLine done); + + interface DoneGetCommandLine { + void doneGetCommandLine(IToken token, Exception error, String[] cmd_line); + } + + /** + * Get context environment variables. + */ + IToken getEnvironment(String id, DoneGetEnvironment done); + + interface DoneGetEnvironment { + void doneGetEnvironment(IToken token, Exception error, String[] environment); + } +} |