Использование памяти модуля ядра

Несколько указателей / комментариев:

  1. Если вы интегрируетесь с безопасностью сервера приложений, то имя пользователя будет доступно в любом компоненте. EJB могут получить его, вызвав getCallerPrincipal() для внедренного варианта EJBContext, здесь сервлеты javax.ejb.SessionContext:

    @Resource
    private SessionContext sessionCtx;
    

    могут получить принципал из HttpServletRequest.getUserPrincipal(). Компоненты JAX-RS (ServiceEJB) могут извлечь его из javax.ws.rs.core.SecurityContext.getUserPrincipal().

    Есть ли какая-либо причина, по которой вы НЕ интегрируетесь с безопасностью сервера приложений?

  2. Если у вас есть веская причина НЕ интегрироваться с безопасностью сервера приложений, я бы предложил вариант решение из предыдущего ответа . Вариант состоит в том, чтобы установить пользовательские данные из фильтра, применяемого ко всем ресурсам (либо фильтр сервлета, либо JAX-RS ContainerRequestFilter), чтобы вам не приходилось беспокоиться об их установке в нескольких местах.

  3. Если вам нужен только идентификатор пользователя для регистрации, я бы посоветовал вам взглянуть на концепцию сопоставленных диагностических контекстов (MDC) в slf4j. С его помощью вы можете установить идентификатор пользователя в начале запроса и сделать его доступным для всех операторов ведения журнала в дальнейшем.

11
задан AIB 20 March 2009 в 06:10
поделиться

3 ответа

Вы упоминаете, что никакое выделение не сделано в функции init, но это принимает во внимание вызовы, такие как register_chrdev (9), которые выделяют память внутренне для экземпляра устройства? Комментарий, что это - постоянное различие, заставляет меня задаться вопросом, могло ли это быть причиной.

4
ответ дан 3 December 2019 в 11:38
поделиться

Могут быть функции используются модулем, считаются в размер модуля? Попробовать

cat /proc/kallsyms | grep module_name

Различие между двумя размерами 404. Текст + данные + 404 = 1024. Это может быть, некоторая проблема гранулярности? Я не знаю, как размер вычисляется в ядре...

Однако код ядра и данные выделяются с помощью динамической памяти. И kmalloc использует предварительно выделенный блок памяти, таким образом, довольно вероятно, что существуют некоторые окружение, когда код и разделы данных выделяются.

Попытайтесь увеличить размер разделов данных и видеть, сообщил ли lsmod об изменении размера

1
ответ дан 3 December 2019 в 11:38
поделиться

Без большей информации я испытываю желание предположить что ее отладка наверху. Я говорю соблазненный, потому что у меня нет Вашей конфигурации ядра.

0
ответ дан 3 December 2019 в 11:38
поделиться
Другие вопросы по тегам:

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