| OLD | NEW |
| 1 """ | 1 """ |
| 2 DO NOT import this file directly - import client/bin/utils.py, | 2 DO NOT import this file directly - import client/bin/utils.py, |
| 3 which will mix this in | 3 which will mix this in |
| 4 | 4 |
| 5 Convenience functions for use by tests or whomever. | 5 Convenience functions for use by tests or whomever. |
| 6 | 6 |
| 7 Note that this file is mixed in by utils.py - note very carefully the | 7 Note that this file is mixed in by utils.py - note very carefully the |
| 8 precedence order defined there | 8 precedence order defined there |
| 9 """ | 9 """ |
| 10 import os, shutil, sys, signal, commands, pickle, glob, statvfs | 10 import os, shutil, sys, signal, commands, pickle, glob, statvfs |
| (...skipping 723 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 734 """ | 734 """ |
| 735 'pgrep name' misses all python processes and also long process names. | 735 'pgrep name' misses all python processes and also long process names. |
| 736 'pgrep -f name' gets all shell commands with name in args. | 736 'pgrep -f name' gets all shell commands with name in args. |
| 737 So look only for command whose initial pathname ends with name. | 737 So look only for command whose initial pathname ends with name. |
| 738 Name itself is an egrep pattern, so it can use | etc for variations. | 738 Name itself is an egrep pattern, so it can use | etc for variations. |
| 739 """ | 739 """ |
| 740 return utils.system("pgrep -f '^([^ /]*/)*(%s)([ ]|$)'" % name_pattern, | 740 return utils.system("pgrep -f '^([^ /]*/)*(%s)([ ]|$)'" % name_pattern, |
| 741 ignore_status=True) == 0 | 741 ignore_status=True) == 0 |
| 742 | 742 |
| 743 | 743 |
| 744 def get_hwclock_seconds(utc=True): | |
| 745 """ | |
| 746 Return the hardware clock in seconds as a floating point value. | |
| 747 Use Coordinated Universal Time if utc is True, local time otherwise. | |
| 748 Raise a ValueError if unable to read the hardware clock. | |
| 749 """ | |
| 750 cmd = '/sbin/hwclock --debug' | |
| 751 if utc: | |
| 752 cmd += ' --utc' | |
| 753 hwclock_output = utils.system_output(cmd, ignore_status=True) | |
| 754 match = re.search(r'= ([0-9]+) seconds since .+ (-?[0-9.]+) seconds$', | |
| 755 hwclock_output, re.DOTALL) | |
| 756 if match: | |
| 757 seconds = int(match.group(1)) + float(match.group(2)) | |
| 758 logging.debug('hwclock seconds = %f' % seconds) | |
| 759 return seconds | |
| 760 | |
| 761 raise ValueError('Unable to read the hardware clock -- ' + | |
| 762 hwclock_output) | |
| 763 | |
| 764 | |
| 765 def set_wake_alarm(alarm_time): | |
| 766 """ | |
| 767 Set the hardware RTC-based wake alarm to 'alarm_time'. | |
| 768 """ | |
| 769 utils.write_one_line('/sys/class/rtc/rtc0/wakealarm', str(alarm_time)) | |
| 770 | |
| 771 | |
| 772 def set_power_state(state): | |
| 773 """ | |
| 774 Set the system power state to 'state'. | |
| 775 """ | |
| 776 utils.write_one_line('/sys/power/state', state) | |
| 777 | |
| 778 | |
| 779 def standby(): | |
| 780 """ | |
| 781 Power-on suspend (S1) | |
| 782 """ | |
| 783 set_power_state('standby') | |
| 784 | |
| 785 | |
| 786 def suspend_to_ram(): | |
| 787 """ | |
| 788 Suspend the system to RAM (S3) | |
| 789 """ | |
| 790 if os.path.exists('/usr/bin/powerd_suspend'): | |
| 791 utils.system('/usr/bin/powerd_suspend') | |
| 792 else: | |
| 793 set_power_state('mem') | |
| 794 | |
| 795 | |
| 796 def suspend_to_disk(): | |
| 797 """ | |
| 798 Suspend the system to disk (S4) | |
| 799 """ | |
| 800 set_power_state('disk') | |
| OLD | NEW |