вложенный сбой страницы пространства пользователя обращается в Linux

Если вы хотите минимизировать дублирующийся код, создайте обратный вызов как объект класса и используйте его для обоих вызовов (что-то вроде этого):

private val callback = object : Callback<DataModel> {
   override fun onResponse(call: Call<DataModel>?, response: Response<DataModel>?) {
       // handler code 
   }

   override fun onFailure(call: Call<DataModel>?, throwable: Throwable?) {
       // error handler code 
   }
}

private fun fetchFirst() {
    if (UseDataApi_1) {
        dataApi.getData_1(getQueryParams()).enqueue(callback)
    } else {
        dataApi.getData_2(getQueryParams()).enqueue(callback)
    }
}
24
задан Dominik Honnef 18 November 2012 в 15:54
поделиться

2 ответа

Просмотр исходных кодов ядра за последний час показывает, что это нормально: ни определение struct vm_operations_struct , ни код между handle_mm_fault () и вызовом vma-> vm_ops -> ошибка в __ do_fault () содержит предостерегающие заявления по этому поводу, и немногие обработчики ошибок ->, на которые я смотрел, тоже не беспокоились об этом ...

... Я думаю, что главное, что вам нужно избегать бесконечной рекурсии путем повторного сбоя по тому же адресу, но это, вероятно, произойдет, только если стек ядра находится в вашей vma что, скорее всего, не произойдет?

1
ответ дан 29 November 2019 в 00:33
поделиться

Это абсолютно правильно. На самом деле, вы даже можете спать.

Но вы можете сделать это только после того, как эта строка пройдена, так как вы окажетесь в неатомарном контексте.

0
ответ дан 29 November 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: