I'm interested too on the same "issue".
On Dec 3, 8:21 pm, "Rene Gonzalez" <renegs.2...@gmail.com> wrote:
> Hi guys I'm a beginner in Android and Linux kernel. As an entry point to
> Android first of all I have to deal with the Linux kernel so one of the
> first tasks that I have to do is a simple driver runnable or configurable as
> module or embedded into the kernel (this configuration has been done within
> the menuconfig). Let me introduce my source code that I tried:
>
> #define PROCFS_MAX_SIZE 80
> #define procfs_name "calc1"
>
> static struct proc_dir_entry *Our_Proc_File;
> static unsigned long procfs_buffer_size = 0;
>
> int procfile_read (char *buffer, char **buffer_location, off_t offset, int
> buffer_length, int *eof, void *data)
> {
> int ret;
> if (offset > 0) // we have finished to read, return 0
> ret = 0;
>
> else // fill the buffer, return the buffer size
> ret = sprintf(buffer, "%s= %d\n",equation,solution);
> //variables defined somewhere else
> return ret;
>
> }
>
> // This function is called with the /proc file is written
> int procfile_write(struct file *file, const char *buffer, unsigned long
> count, void *data)
> {
> int i;
> procfs_buffer_size = count;
>
> for (i=0; i<count-1; i++)
> equation[i]= buffer[i];
> equation[i]= '\0';
> calc1(); //this function is defined somewhere else
> return procfs_buffer_size;
>
> }
>
> int init_module()
> {
> Our_Proc_File = create_proc_entry(procfs_name, 0644, NULL);
>
> if (Our_Proc_File == NULL)
> {
> remove_proc_entry(procfs_name, &proc_root);
> printk(KERN_ALERT "Error: Not initialize /proc/%s\n",
> procfs_name);
> return -ENOMEM;
> }
>
> Our_Proc_File->read_proc = procfile_read;
> Our_Proc_File->write_proc = procfile_write;
> Our_Proc_File->owner = THIS_MODULE;
> Our_Proc_File->mode = S_IFREG | S_IRUGO;
> Our_Proc_File->uid = 0;
> Our_Proc_File->gid = 0;
> Our_Proc_File->size = 37;
>
> printk(KERN_ALERT "/proc/%s created\n", procfs_name);
> return 0; // everything is ok
>
> }
>
> void cleanup_module()
> {
> remove_proc_entry(procfs_name, &proc_root);
> printk(KERN_ALERT "/proc/%s removed\n", procfs_name);
>
> }
>
> MODULE_LICENSE("Dual BSD/GPL");RT_SYMBOL(procfile_write);
>
> This works fine as module an initializing with insmod & ending with rmmod
> constructs. the main goal is that, if it's a module avoid the needed of the
> uses of insmod/rmmod constructs or....... if this is embedded into the
> kernel....I coulded find and use this driver.
>
> If any one can help me to fix that I'll be really grateful:
> - How to link or init the module without using the insmod/rmmod constructs,
> and
> - If the driver (module) is embedded into th kernel, where is it placed or
> haw to use it.
>
> In advance many thaks for any help,
> Best regards.
> Reno.
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: android-porting+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---