Я просто хотел защелкнуться на любые запросы ajax для всей страницы. @SuperG заставил меня начать. Вот что я закончил с:
// redirect ajax requests that are redirected, not found (404), or forbidden (403.)
$('body').bind('ajaxComplete', function(event,request,settings){
switch(request.status) {
case 301: case 404: case 403:
window.location.replace("http://mysite.tld/login");
break;
}
});
Я хотел специально проверить определенные коды состояния http, чтобы основать мое решение. Однако вы можете просто привязать ajaxError к чему-то другому, кроме успеха (возможно, только 200)? Я мог бы просто написать:
$('body').bind('ajaxError', function(event,request,settings){
window.location.replace("http://mysite.tld/login");
}
__kernel_vsyscal
метод, используемый linux-gate.so (часть ядра Linux) для создания системного вызова с помощью самого быстрого доступного метода, предпочтительно sysenter
инструкция. Вещь правильно объяснена Johan Petersson .
При создании системного вызова (как чтение из файла, говоря с аппаратными средствами, пишущий в сокеты) Вы на самом деле создаете прерывание. Система затем обрабатывает прерывание в привилегированном режиме и Ваших возвратах вызова с результатом. Большую часть времени для Вас необычно иметь много потоков в syscall, если Вы не выполните блокирующиеся вызовы, в этом случае это ожидается.
Строго говоря, это означает, что поток ожидает на системном вызове уровня ядра. Но это уже (к сожалению для моих точек) на имя :)
В дополнение к уже данной хорошей ссылке на объяснение того, какой linux-gate.so
, я хотел бы ответить, "почему это ядро отличается?". Новый (более новый, чем 2.5.68) 32-разрядные системы Linux используют страницу VDSO (иначе linux-gate.so.1
), и 64-разрядные системы скоро запустятся также (64-разрядный VDSO был представлен в ядре 2.6.24).
, Если бы Вы разрабатываете в более старой системе, или со старым glibc, затем Вы никогда не видели бы __kernel_vsyscall()
, или потому что ядро не создало VDSO вообще, или потому что (старый) glibc не использует его, даже когда VDSO присутствует.
As Adam said, the main reason is performance. See this link for some old numbers http://lkml.org/lkml/2002/12/9/13.
If you have a vDSO enabled kernel, you're not using interrupts to run syscalls, as Stefan said, actually was because interrupts was getting slower that the whole vDSO thing was added to the kernel.