ACPICA: Unix application OSL: Correctly handle control-c (EINTR)
ACPICA commit dfbb87c3a96cfd007375f34a96e6f4a8ee477f97 Handle EINTR from a sem_wait operation. Ignore a control-c. Link: https://github.com/acpica/acpica/commit/dfbb87c3 Signed-off-by: Bob Moore <robert.moore@intel.com> Signed-off-by: Lv Zheng <lv.zheng@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
b9ef2ab058
commit
fdf8707bd5
|
@ -750,9 +750,9 @@ acpi_os_wait_semaphore(acpi_handle handle, u32 units, u16 msec_timeout)
|
|||
{
|
||||
acpi_status status = AE_OK;
|
||||
sem_t *sem = (sem_t *) handle;
|
||||
int ret_val;
|
||||
#ifndef ACPI_USE_ALTERNATE_TIMEOUT
|
||||
struct timespec time;
|
||||
int ret_val;
|
||||
#endif
|
||||
|
||||
if (!sem) {
|
||||
|
@ -778,7 +778,10 @@ acpi_os_wait_semaphore(acpi_handle handle, u32 units, u16 msec_timeout)
|
|||
|
||||
case ACPI_WAIT_FOREVER:
|
||||
|
||||
if (sem_wait(sem)) {
|
||||
while (((ret_val = sem_wait(sem)) == -1) && (errno == EINTR)) {
|
||||
continue; /* Restart if interrupted */
|
||||
}
|
||||
if (ret_val != 0) {
|
||||
status = (AE_TIME);
|
||||
}
|
||||
break;
|
||||
|
@ -831,7 +834,8 @@ acpi_os_wait_semaphore(acpi_handle handle, u32 units, u16 msec_timeout)
|
|||
|
||||
while (((ret_val = sem_timedwait(sem, &time)) == -1)
|
||||
&& (errno == EINTR)) {
|
||||
continue;
|
||||
continue; /* Restart if interrupted */
|
||||
|
||||
}
|
||||
|
||||
if (ret_val != 0) {
|
||||
|
|
Loading…
Reference in New Issue