
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
©ft`¨  ã               @   s’   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlZ	ddl
Z
ddlZddlZejejd ƒZe
jdƒZd	d
„ Zdd„ Zdd„ Zdd„ ZdS )z/Various utility functions, and a utility class.é    )Úabsolute_import)Úunicode_literals)Úformat_number)Ú_NÚ
SC_CLK_TCKÚdnfc             C   s   t | ƒt S )zäConvert a number of jiffies to seconds. How many jiffies are in a second
    is system-dependent, e.g. 100 jiffies = 1 second is common.

    :param jiffies: a number of jiffies
    :return: the equivalent number of seconds
    )ÚintÚ_USER_HZ)Zjiffies© r
   ú/usr/lib/python3.6/utils.pyÚjiffies_to_seconds   s    r   c             C   sj   | dkr0d| d	 | d
 d | d d | d f S | dkrVd| d | d d | d f S d| d | d f S )a  Return a human-readable string representation of the length of
    a time interval given in seconds.

    :param seconds: the length of the time interval in seconds
    :return: a human-readable string representation of the length of
      the time interval
    é<   é   z%d day(s) %d:%02d:%02dz%d:%02d:%02dz	%02d:%02di  i€Q i  i€Q i  i  i  r
   )Zsecondsr
   r
   r   Úseconds_to_ui_time)   s    

r   c             C   sª  t | ƒ} tjjd|  ƒ s:tjjdƒ s:tjjd|  ƒ r>dS i }td|  ƒ�v}xn|D ]f}|d dkrhqV|dd… jddƒ}t|ƒdk rŠqVtjj	|d d	ƒ|d< |d j
ƒ ||d
 j
ƒ jƒ < qVW W dQ R X d|krÖdS d|krâdS d}tdƒ�4}x,|D ]$}|jdƒröt |tdƒd… ƒ}P qöW W dQ R X |dk�r6dS td|  ƒ�^}|jƒ jƒ }|t|d ƒ |d< tdƒtdƒtdƒtdƒtdƒdœj|d tdƒƒ|d< W dQ R X |S )z!Return info dict about a process.z/proc/%d/statusz
/proc/statz/proc/%d/statNé   Ú
z:	é   z kBr   ÚvmrssÚvmsizezbtime é   Ú
start_timeZRunningZSleepingZUninterruptibleZZombiezTraced/Stopped)ÚRÚSÚDÚZÚTZUnknownÚstateéÿÿÿÿr   r   )r   ÚosÚpathÚexistsÚopenÚsplitÚlenr   ÚutilZrtrimÚstripÚlowerÚ
startswithÚreadr   r   Úget)ÚpidÚpsZstatus_fileÚlineÚdataZ	boot_timeZ	stat_fileZps_statr
   r
   r   Úget_process_info<   sJ    
*



r.   c             C   sÄ   t | ƒ}|s$tdƒ}tj|| ƒ dS tdƒ| |d f }tjd|ƒ tjtdƒtt|d ƒd ƒtt|d	 ƒd ƒƒ tttjƒ ƒ|d
  ƒ}tjtdƒtj	j
|d
 ƒ|ƒ tjtdƒ|d ƒ dS )z0Output information about process holding a lock.z=Unable to find information about the locking process (PID %d)Nz$  The application with PID %d is: %sÚnamez%sz    Memory : %5s RSS (%5sB VSZ)r   i   r   r   z    Started: %s - %s agoz    State  : %sr   )r.   r   ÚloggerZcriticalr   r   r   Útimer   r$   Znormalize_time)r*   r+   ÚmsgZagor
   r
   r   Úshow_lock_ownerl   s    

r3   )Ú__doc__Z
__future__r   r   Zdnf.cli.formatr   Zdnf.i18nr   Zdnf.utilr   Zloggingr   r1   ÚsysconfÚsysconf_namesr	   Z	getLoggerr0   r   r   r.   r3   r
   r
   r
   r   Ú<module>   s   

0