Using ioctl from with the kernel ???

6 messages, 3 authors, 2002-11-12 · open the first message on its own page

Using ioctl from with the kernel ???

From: Steven Scholz <hidden>
Date: 2002-11-12 14:48:23

Hi there,

I use a device driver (/dev/status_led from DENX) to manipulate some frontpanel
LEDs from user space via some ioctls.

Now I'd like to access them from the kernel space. How can I do that? AFAIK I
can't use fopen and ioctl...

Thanks,

Steven

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

RE: Using ioctl from with the kernel ???

From: Stephan Linke <hidden>
Date: 2002-11-12 15:07:21

Hello Steven,

Your right IOCTL is not applicable for this. You can simply call the driver
functions directly. If these functions are called different from different
context(s) (like your driver and the IOCTL function) you have to add some
protection mechanism. (The code is not reentrant right?) You may try
spin_lock() for this job (linux/spinlock.h). If you are calling the
functions from interrupt contect too some extra protection is required...

Regards, Stephan

-----Original Message-----
From: owner-linuxppc-embedded@lists.linuxppc.org
[mailto:owner-linuxppc-embedded@lists.linuxppc.org]On Behalf Of Steven
Scholz
Sent: Dienstag, 12. November 2002 15:48
To: LinuxPPC
Subject: Using ioctl from with the kernel ???



Hi there,

I use a device driver (/dev/status_led from DENX) to manipulate
some frontpanel
LEDs from user space via some ioctls.

Now I'd like to access them from the kernel space. How can I do
that? AFAIK I
can't use fopen and ioctl...

Thanks,

Steven

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

Re: Using ioctl from with the kernel ???

From: Steven Scholz <hidden>
Date: 2002-11-12 15:11:05

Hi Stephan,
Your right IOCTL is not applicable for this. You can simply call the driver
functions directly. If these functions are called different from different
context(s) (like your driver and the IOCTL function) you have to add some
protection mechanism. (The code is not reentrant right?) You may try
spin_lock() for this job (linux/spinlock.h). If you are calling the
functions from interrupt contect too some extra protection is required...
Thanks for your reply.

But how could I call the ioctl handler of the driver?
I would need some (dummy) inode...

Steven

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

R: Using ioctl from with the kernel ???

From: Stefano Coluccini <hidden>
Date: 2002-11-12 15:36:28

Hi,
  the driver is linked to the kernel, so global (not static) functions
declared in a driver can be called from the kernel and in particular from
another driver, so you can bound the code of your ioctl in a function and
call it from the ioctl handler and from the other driver ... using the
protection mechanism suggested by Stephan.

Bye.

Stefano.
-----Messaggio originale-----
Da: owner-linuxppc-embedded@lists.linuxppc.org
[mailto:owner-linuxppc-embedded@lists.linuxppc.org]Per conto di Steven
Scholz
Inviato: martedi 12 novembre 2002 16.11
A: Stephan Linke
Cc: Linuxppc-Embedded
Oggetto: Re: Using ioctl from with the kernel ???



Hi Stephan,
quoted
Your right IOCTL is not applicable for this. You can simply
call the driver
quoted
functions directly. If these functions are called different
from different
quoted
context(s) (like your driver and the IOCTL function) you have
to add some
quoted
protection mechanism. (The code is not reentrant right?) You may try
spin_lock() for this job (linux/spinlock.h). If you are calling the
functions from interrupt contect too some extra protection is
required...

Thanks for your reply.

But how could I call the ioctl handler of the driver?
I would need some (dummy) inode...

Steven



** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

RE: Using ioctl from with the kernel ???

From: Stephan Linke <hidden>
Date: 2002-11-12 15:57:17

Hi Steve,

If you realy like to do so you can call the LEDDRIVER_ioctl() function
directly with some dummy parameter (the one of you LED driver, not the one
from user space wich is to be called using an file descriptor). But I would
prefer to move the functionality into some extra function and call these
function from LEDDRIVER_ioctl() and from OTHERDRIVER_change_led() (like
Stefano suggested).


Regards, Stephveano :)

Hi,
  the driver is linked to the kernel, so global (not static) functions
declared in a driver can be called from the kernel and in particular from
another driver, so you can bound the code of your ioctl in a function and
call it from the ioctl handler and from the other driver ... using the
protection mechanism suggested by Stephan.

Bye.

Stefano.
quoted
-----Messaggio originale-----
Da: owner-linuxppc-embedded@lists.linuxppc.org
[mailto:owner-linuxppc-embedded@lists.linuxppc.org]Per conto di Steven
Scholz
Inviato: martedi 12 novembre 2002 16.11
A: Stephan Linke
Cc: Linuxppc-Embedded
Oggetto: Re: Using ioctl from with the kernel ???



Hi Stephan,
quoted
Your right IOCTL is not applicable for this. You can simply
call the driver
quoted
functions directly. If these functions are called different
from different
quoted
context(s) (like your driver and the IOCTL function) you have
to add some
quoted
protection mechanism. (The code is not reentrant right?) You may try
spin_lock() for this job (linux/spinlock.h). If you are calling the
functions from interrupt contect too some extra protection is
required...

Thanks for your reply.

But how could I call the ioctl handler of the driver?
I would need some (dummy) inode...

Steven

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

Re: Using ioctl from with the kernel ???

From: Steven Scholz <hidden>
Date: 2002-11-12 16:05:08

Stephan Linke wrote:
Hi Steve,

If you realy like to do so you can call the LEDDRIVER_ioctl() function
directly with some dummy parameter (the one of you LED driver, not the one
from user space wich is to be called using an file descriptor). But I would
prefer to move the functionality into some extra function and call these
function from LEDDRIVER_ioctl() and from OTHERDRIVER_change_led() (like
Stefano suggested).
Many thanks to you both.

I'll try that!

Good luck,

Steven

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help