Compilação do kernel

1. Compilação do kernel

Filippe Brito
filippebrito

(usa Ubuntu)

Enviado em 18/07/2015 - 14:41h

Boa tarde,


Compilando a system call que desenvolvi, apareceu os seguintes erros:
"Dependencia Circular", a qual apareceu que ela foi ingorada prosseguindo com a compilação... Pesquisando na internet, não consegui chegar uma conclusão de onde realmente está o erro, usei um laço de contagem no código, suspeito que possa ser isso.
Outra questão que travou a compilação foi outro Erro 1
(ld: não foi possível encontrar minhasys: Formato de arquivo não reconhecido
make: ** [vmlinux] Erro 1)
, printei a tela para visualizar melhor, também não sei do que se trata, suspeito que possa ser algo relacionado com Makefile.

Alguem sabe onde pode ser a origem desses erros?

Segue o código da system call (pode ser que o erro esteja nela)
Elá precisa receber o PID do processo como parametro e retornar o número de arquivos abertos por esse processo.

#include <linux/init.h>
#include <linux/module.h>
#include<linux/sched.h>
#include <linux/rcupdate.h>
#include <linux/fdtable.h>
#include <linux/fs.h>
#include <linux/fs_struct.h>
#include <linux/dcache.h>
#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/linkage.h>
#include <linux/unistd.h>
#include <linux/moduleparam.h>
#include <linux/pid.h>

/* Return number of files open per process */
extern struct task_struct *find_process_by_pid(pid_t pid);



asmlinkage long sys_minhasys(int pid)
{
pid_t pidt = pid; //valor inteiro do pid
struct task_struct *task;
struct pid *pid_struct;
struct files_struct *p;
struct fdtable *files_table;
struct path files_path;
int i=0;
char *cwd;
char *buf = (char *)kmalloc(GFP_KERNEL,100*sizeof(char));

pid_struct = find_get_pid(pidt); /*funciona para encontrar o pid_struct */
task = pid_task(pid_struct,PIDTYPE_PID); /*find the task_struct */

if (task == NULL)
{
printk (KERN_INFO "Processo com o pid %d is não existe \n",pid);
return -1;
}


else{

p = find_process_by_pid((pid_t) pid) -> files;
files_table = files_fdtable(p);

while(files_table->fd[i] != NULL)
{
files_path = files_table->fd[i]->f_path;
cwd = d_path(&files_path,buf,100*sizeof(char));
i++;
}
return i;
}

}


  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts