Descontinuação da função "set_task_state" da sched.h [RESOLVIDO]

1. Descontinuação da função "set_task_state" da sched.h [RESOLVIDO]

Matheus
Matheus_Santos

(usa Debian)

Enviado em 03/12/2023 - 14:13h

Pessoal, boa tarde!

Alguém sabe informar se a função "set_task_state" foi descontinuada nas versões recentes do Kernel Linux?
Estou tentando programar um módulo de Kernel, onde ele altera o estado de um processo para "TASK_INTERRUPTIBLE" e quando executo o "make" ele apresenta erro:

error: implicit declaration of function ‘set_task_state’; did you mean ‘set_task_cpu’? [-Werror=implicit-function-declaration]
21 | set_task_state(task, TASK_INTERRUPTIBLE);
| ^~~~~~~~~~~~~~
| set_task_cpu
cc1: some warnings being treated as errors

Se alguém souber informar algo sobre isso, agradeço!


  


2. Re: Descontinuação da função

3. Re: Descontinuação da função "set_task_state" da sched.h [RESOLVIDO]

Matheus
Matheus_Santos

(usa Debian)

Enviado em 04/12/2023 - 21:55h


Estou usando a versão "6.1.15-1" do Kernel, no momento testando em uma distro Parrot OS


4. Re: Descontinuação da função

Buckminster
Buckminster

(usa Debian)

Enviado em 04/12/2023 - 22:03h

Matheus_Santos escreveu:


Estou usando a versão "6.1.15-1" do Kernel, no momento testando em uma distro Parrot OS


Não tem set_task_state, ficou a set_task_cpu:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/sched/sched.h?h=v6.1

_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


5. Re: Descontinuação da função

Matheus
Matheus_Santos

(usa Debian)

Enviado em 04/12/2023 - 22:15h

Sim, pelos links que li, qual você mandou em https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.7-rc4&id=642fa44... Ele específica que a função "set_task_state" em favor de uma abordagem mais eficiente usando current foi removida e foi adotada set_current_state. Ou seja, não é mais possível realizar a alteração de um estado de um processo remoto, (outro processo em execução no sistema) - Gostaria de fazer isso para realizar alguns experimentos... Mesmo assim, obrigado pela ajuda e pelos links fornecidos!


6. Re: Descontinuação da função

Buckminster
Buckminster

(usa Debian)

Enviado em 04/12/2023 - 22:55h

É isso que está procurando?

1.4 What are exclusive cpusets ?
If a cpuset is cpu or mem exclusive, no other cpuset, other than a direct ancestor or descendant, may share any of the same CPUs or Memory Nodes.

A cpuset that is cpuset.mem_exclusive or cpuset.mem_hardwall is "hardwalled", i.e. it restricts kernel allocations for page, buffer and other data commonly shared by the kernel across multiple users. All cpusets, whether hardwalled or not, restrict allocations of memory for user space. This enables configuring a system so that several independent jobs can share common kernel data, such as file system pages, while isolating each job's user allocation in its own cpuset. To do this, construct a large mem_exclusive cpuset to hold all the jobs, and construct child, non-mem_exclusive cpusets for each individual job. Only a small amount of typical kernel memory, such as requests from interrupt handlers, is allowed to be taken outside even a mem_exclusive cpuset.

https://docs.kernel.org/admin-guide/cgroup-v1/cpusets.html

Nesse link acima tem mais coisas interessantes.
E provavelmente tu teria que incluir algo como
#define TASK_INTERRUPTIBLE 1 <<< o valor que você deseja.
no sched.h.

Tem também:
#define TASK_RUNNING 0
#define TASK_UNINTERRUPTIBLE 2
#define __TASK_STOPPED 4
#define __TASK_TRACED 8
Aí você vê.


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


7. Re: Descontinuação da função

Matheus
Matheus_Santos

(usa Debian)

Enviado em 05/12/2023 - 10:05h

Na verdade, o que eu gostaria de fazer era apenas alterar o estado de um processo qualquer através de um módulo de Kernel.
Ex:
Criar um módulo de Kernel para alterar o estado do processo "Google Chrome" para "TASK_INTERRUPTIBLE" por exemplo.

Isso era possível através da função "set_task_state(task, TASK_INTERRUPTIBLE)", pois em "task" poderia ser um ponteiro para apontar para a estrutura "TASK_STRUCT" do processo Google Chrome, mas removeram essa possibilidade, pelo o que eu vi nos links que você forneceu para "set_current_state(STATE)". Dessa forma, só consigo alterar apenas o estado do próprio processo.


8. Re: Descontinuação da função "set_task_state" da sched.h [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 07/12/2023 - 22:28h

Aqui tem algo interesante:
https://unix.stackexchange.com/questions/623552/is-a-process-in-task-interruptible-state-waken-up-on...


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!


9. Re: Descontinuação da função "set_task_state" da sched.h [RESOLVIDO]

Matheus
Matheus_Santos

(usa Debian)

Enviado em 07/12/2023 - 23:25h


Perfeito! Esse link me interessou bastante.
A explicação e o exemplo prático contido neles, estão perfeito. Obrigado!


10. Re: Descontinuação da função "set_task_state" da sched.h [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 07/12/2023 - 23:34h


Matheus_Santos escreveu:


Perfeito! Esse link me interessou bastante.
A explicação e o exemplo prático contido neles, estão perfeito. Obrigado!


De nada.


_________________________________________________________
Always listen the Buck!
Enquanto o cursor estiver pulsando, há vida!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts