Re: usb driver binding to the device

2010-09-12 Thread Alison Chaiken
The newer _Essential Linux Device Drivers_ book by Venkiteswaran has
long, detailed chapters about PCI, USB, serial and network devices,
all with detailed example code.

-- 
Alison Chaiken
(650) 279-5600  (cell)
             http://www.exerciseforthereader.org/
The only real deadline in life is the one where you actually die. -- Eliot D.

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: difference between read permission and executing permission

2010-09-12 Thread Manish Katiyar
On Sun, Sep 12, 2010 at 9:07 PM, Parmenides  wrote:
> 2010/9/12 Mulyadi Santosa :
>> On Sun, Sep 12, 2010 at 00:28, Parmenides  
>> wrote:
>>> Hi,
>>>
>>>   For a specified directory, we can go through it when the kernel
>>> parsing path, though we can not read it. Actually, parsing path also
>>> need read the directory file. So, how does the kernel distinguish
>>> between these two permission?
>>
> Sorry for replying so late due to some trifles. For a directory, if it
> is allowed to read, that means we can list all items in its directory
> file, namely that we can read it completely.

May be I understood the question wrong but you can't "ls" in a
directory if it doesn't have execute permission. Or rather even if a
directory has read/exectue permission you can't ls on it till all the
directories in its path have execute permission. Is there something
else that you are asking ?

/home/mkatiyar/codetree/main> cd /tmp
/tmp> mkdir -p a/b/c/d
/tmp> ls -lR a
a:
total 4
drwxr-xr-x 3 mkatiyar mkatiyar 4096 2010-09-12 22:26 b

a/b:
total 4
drwxr-xr-x 3 mkatiyar mkatiyar 4096 2010-09-12 22:26 c

a/b/c:
total 4
drwxr-xr-x 2 mkatiyar mkatiyar 4096 2010-09-12 22:26 d

a/b/c/d:
total 0
/tmp> chmod 000 a/b
/tmp> ls -lR a
a:
total 4
d- 3 mkatiyar mkatiyar 4096 2010-09-12 22:26 b
ls: cannot open directory a/b: Permission denied
/tmp> cd a/b
ksh: cd: a/b: [Permission denied]
/tmp> ls a/b
ls: cannot open directory a/b: Permission denied


> If it is allowed to
> execute, that means we can go through it in a process of path parsing.
> Path parsing will open every directory in a specified path. For
> example, when parsing a path like /home/parmenides/src/hello.c, the
> kernel will open a sequence of directory files, namely /, /home,
> /home/parmenides and /home/parmenides/src, and read its subdirectory
> for each. So, both of read permission and executing permission mean
> that the kernel need to read the corresponding directory file. As
> such, the common 'readable' has two meanings for a directory. One
> corresponds to read the directory file when listing it, the other
> corresponds to read the directory file when paring path.
>
> On the other hand, system call opendir(const char *pathname) has no
> way to distinguish these two meanings whereas both listing and path
> parsing need call opendir(). My quesition is exactly that how these
> two permissions take their effect.
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecar...@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>



-- 
Thanks -
Manish
==
[$\*.^ -- I miss being one of them
==

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: difference between read permission and executing permission

2010-09-12 Thread Parmenides
2010/9/12 Mulyadi Santosa :
> On Sun, Sep 12, 2010 at 00:28, Parmenides  wrote:
>> Hi,
>>
>>   For a specified directory, we can go through it when the kernel
>> parsing path, though we can not read it. Actually, parsing path also
>> need read the directory file. So, how does the kernel distinguish
>> between these two permission?
>
Sorry for replying so late due to some trifles. For a directory, if it
is allowed to read, that means we can list all items in its directory
file, namely that we can read it completely. If it is allowed to
execute, that means we can go through it in a process of path parsing.
Path parsing will open every directory in a specified path. For
example, when parsing a path like /home/parmenides/src/hello.c, the
kernel will open a sequence of directory files, namely /, /home,
/home/parmenides and /home/parmenides/src, and read its subdirectory
for each. So, both of read permission and executing permission mean
that the kernel need to read the corresponding directory file. As
such, the common 'readable' has two meanings for a directory. One
corresponds to read the directory file when listing it, the other
corresponds to read the directory file when paring path.

On the other hand, system call opendir(const char *pathname) has no
way to distinguish these two meanings whereas both listing and path
parsing need call opendir(). My quesition is exactly that how these
two permissions take their effect.

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: hello world module error

2010-09-12 Thread Bond
On Mon, Sep 13, 2010 at 6:47 AM, Mulyadi Santosa
wrote:

> to dig further by your own. Hint: use make V=1
>
>
> yes the directory name had a blank space


Re: Regarding Signals in Kernel

2010-09-12 Thread Mulyadi Santosa
Hi

On Mon, Sep 13, 2010 at 01:22, Dave Hylands  wrote:
> Hi Sri,
>
> On Sun, Sep 12, 2010 at 10:02 AM, Sri Ram Vemulpali
>  wrote:
>> Hi Guys,
>>    This is the question asked by WindRiver.com in interview.
>>    Question: A process has 5 children. Process child 5 is trying to send
>> signal (some signal) to Child 2 and Child 3. Calls signal(2,SIG),
>> signal(3,SIG). Now the question is, How are the signals delivered, I mean
>> their order and which child process gets the signal first.
>
> It is my understanding that signals are delivered when a process makes
> the kernel-space to user-space transition (say on a system call). So
> which one will be called first depends on which child makes the next
> system call.

AFAIK, signal set on target task_struct can be modified anytime. Then,
on the next nearest context switch  (AFAIK: interrupt to kernel mode,
interrupt to user mode and so on) ...due to the raised re-scheduling
request most of times (I really become rusty here), next process is
picked.

If it is the one that has the signal queued, its signal set is checked
for any waiting signal. Depending the signal and the setup of handler,
it could be handled in kernel space right away before rising up to
user mode. Or it could be...I call it, "blitzkrieg mode", jump fast to
user mode, execute the user mode handler (in the case there's custom
handler installed), fall back again to kernel mode.

So as you can see briefly above, signal could be delivered anytime,
but you can't really tell when it would be picked. Nasty, yes...this
is a non real time OS anyway :D

>> I know that if you use real time signals they are delivered in order and
>> accounts for number of times signals are delivered, this is in threads. But
>> when it comes process, a process can not send signals to its own group in
>> linux kernel.
>> So can anyone please clarify this, what is the right scenario.
>
> I'm not familiar enough with the distinctions to provide any more detail here.
>
> I don't see any reason why a process can't signal itself, but this is
> just an opinion, not backed up by any fact or experiment.
>
> --
> Dave Hylands
> Shuswap, BC, Canada
> http://www.DaveHylands.com/
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to ecar...@nl.linux.org
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>



-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: hello world module error

2010-09-12 Thread Mulyadi Santosa
Hi...

On Sun, Sep 12, 2010 at 23:34, Bond  wrote:
> I created a small hello world module for programming
>
> make -C /lib/modules/2.6.32-24-generic/build M=/home/bond/rrr modules
> make[1]: Entering directory `/usr/src/linux-headers-2.6.32-24-generic'
> make[1]: *** No rule to make target `rrr'.  Stop.
Something is wrong, your "rrr" directory is interpreted as "make
target" instead of directory. I can't tell for sure, so you might try
to dig further by your own. Hint: use make V=1


-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: a problem in a character driver code

2010-09-12 Thread Bond
Ok by now I have been able to fix this problem.

1) config.h has been dropped from 2.6.19 series of kernels so that was one
error

2) the program was kept in a directory whose directory name had a blank
space in between this was also giving me errors
3) I had tried the functions with my name rather than
memory_open,memory_read,memory_release
I am not clear if this type of use is wrong.

On Sun, Sep 12, 2010 at 7:52 PM, Bond  wrote:

> =
>
>
>
> /* Necessary includes for device drivers */
> #include 
> #include 
>

config.h has been dropped from 2.6.19 series of kernels so that was one
error


> #include 
> #include  /* printk() */
> #include  /* kmalloc() */
> #include  /* everything... */
> #include  /* error codes */
> #include  /* size_t */
> #include 
> #include  /* O_ACCMODE */
> #include  /* cli(), *_flags */
> #include  /* copy_from/to_user */
>
>
> /* Declaration of memory.c functions */
> int bond_open(struct inode *inode, struct file *filp) { return 0;};
>
I had tried the functions with my name rather than
memory_open,memory_read,memory_release
I am not clear if this type of use is wrong.
The driver is working but it if I do

echo -n abcdefg > /dev/memory

then on doing cat /dev/memory
only last g is coming and all previous words which I gave abcdef  are
dropped out
any idea on what might be the error.


Re: Regarding Signals in Kernel

2010-09-12 Thread Dave Hylands
Hi Sri,

On Sun, Sep 12, 2010 at 10:02 AM, Sri Ram Vemulpali
 wrote:
> Hi Guys,
>    This is the question asked by WindRiver.com in interview.
>    Question: A process has 5 children. Process child 5 is trying to send
> signal (some signal) to Child 2 and Child 3. Calls signal(2,SIG),
> signal(3,SIG). Now the question is, How are the signals delivered, I mean
> their order and which child process gets the signal first.

It is my understanding that signals are delivered when a process makes
the kernel-space to user-space transition (say on a system call). So
which one will be called first depends on which child makes the next
system call.

> I know that if you use real time signals they are delivered in order and
> accounts for number of times signals are delivered, this is in threads. But
> when it comes process, a process can not send signals to its own group in
> linux kernel.
> So can anyone please clarify this, what is the right scenario.

I'm not familiar enough with the distinctions to provide any more detail here.

I don't see any reason why a process can't signal itself, but this is
just an opinion, not backed up by any fact or experiment.

-- 
Dave Hylands
Shuswap, BC, Canada
http://www.DaveHylands.com/

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Regarding Signals in Kernel

2010-09-12 Thread Sri Ram Vemulpali
Hi Guys,

   This is the question asked by WindRiver.com in interview.

   Question: A process has 5 children. Process child 5 is trying to send
signal (some signal) to Child 2 and Child 3. Calls signal(2,SIG),
signal(3,SIG). Now the question is, How are the signals delivered, I mean
their order and which child process gets the signal first.


I know that if you use real time signals they are delivered in order and
accounts for number of times signals are delivered, this is in threads. But
when it comes process, a process can not send signals to its own group in
linux kernel.

So can anyone please clarify this, what is the right scenario.

Thanks,
Sri.


Re: Shared Interrupt Lines [was IRQ_NONE or IRQ_HANDLED]

2010-09-12 Thread Carlo Caione
On Sun, 2010-09-12 at 11:54 -0500, Josh Cartwright wrote:

> That's up for you, the driver writer, to decide.  In your driver code
> you are probably already keeping around a per-device object (that will
> hold pointers to mapped registers, or other ways of communicating with
> your device), so it makes sense in this case to request_irq() by passing
> a pointer to that per-device object. In this way, your handler can
> communicate with your device and ask it if it was the one that generated
> the interrupt.

Wow, very clear :)
Thank you,

--
Carlo 



--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: Shared Interrupt Lines [was IRQ_NONE or IRQ_HANDLED]

2010-09-12 Thread Josh Cartwright
On Sun, Sep 12, 2010 at 06:18:57PM +0200, Carlo Caione wrote:
>
> > That being said, the IRQ-core core does need some way to differentiate
> > between handlers for shared IRQs.  This is necessary so that you can
> > selectively uninstall handlers.  This is also why the free_irq() takes
> > not only the IRQ#, but the dev_id (your dev1 or dev2) you registered
> > with.
> 
> I'm ok also with this point. But for example:
> the IRQ-core code executes  both the handlers for the shared irqn. 
> Just one of the handlers is the right one for that specific device, 
> whereas the other one should be return IRQ_NONE.

Well, thats not _entirely_ true.  It is possible that two devices
sharing an IRQ can interrupt at the same time, so both handlers could
return IRQ_HANDLED. :)

> How do those parameters dev1 and dev2 help me within the handler
> functions to know if the interrupt is coming from the right devices?

That's up for you, the driver writer, to decide.  In your driver code
you are probably already keeping around a per-device object (that will
hold pointers to mapped registers, or other ways of communicating with
your device), so it makes sense in this case to request_irq() by passing
a pointer to that per-device object. In this way, your handler can
communicate with your device and ask it if it was the one that generated
the interrupt.

> I hope I'm not saying something stupid :)

Not at all.

-- 
-joshc

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



hello world module error

2010-09-12 Thread Bond
I created a small hello world module for programming

make -C /lib/modules/2.6.32-24-generic/build M=/home/bond/rrr modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-24-generic'
make[1]: *** No rule to make target `rrr'.  Stop.
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-24-generic'
make: *** [build] Error 2


what could be the error
following is Makefile

ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
.PHONY: build clean
build:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c
rm -rf modules.order Module.symvers
else
$(info Building with KERNELRELEASE =${KERNELRELEASE})
obj-m := program.o

endif


and following is the program



/* Necessary includes for device drivers */
#include 
#include 
#include  /* printk() */


static int bond_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}

static void bond_exit(void)
{
printk (KERN_ALERT "Good by cruel world\n");
}

module_init(bond_init);
module_exit(bond_exit);

MODULE_AUTHOR("bond");
MODULE_LICENSE("GPL");


Re: Shared Interrupt Lines [was IRQ_NONE or IRQ_HANDLED]

2010-09-12 Thread Carlo Caione

On Sep 12, 2010, at 5:08 PM, Josh Cartwright wrote:

> The provided dev pointer to request_irq() is not itself useful to the
> core IRQ code, it doesn't do anything but store it away for use when
> calling your handler function.

Ok

> That being said, the IRQ-core core does need some way to differentiate
> between handlers for shared IRQs.  This is necessary so that you can
> selectively uninstall handlers.  This is also why the free_irq() takes
> not only the IRQ#, but the dev_id (your dev1 or dev2) you registered
> with.

I'm ok also with this point. But for example:
the IRQ-core code executes  both the handlers for the shared irqn. 
Just one of the handlers is the right one for that specific device, 
whereas the other one should be return IRQ_NONE.
How do those parameters dev1 and dev2 help me within the handler
functions to know if the interrupt is coming from the right devices?

> Hopefully that answers your question. :)

I hope I'm not saying something stupid :)

--
Carlo Caione







--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: usb driver binding to the device

2010-09-12 Thread Josh Cartwright
On Sun, Sep 12, 2010 at 09:34:18PM +0530, Bond wrote:
> On Sun, Sep 12, 2010 at 9:21 PM, Josh Cartwright  wrote:
> 
> > Again, you can look through the slides.  Also you should read LDD3, as
> > it covers alot of your questions.
>
> I am reading that book.
> That book does talk about having a high level driver which is an
> interface to the system calls but it does not talks about Bus Star
> operations such as with different IO controllers on different
> architectures.

There are examples for interfacing with PCI, USB, and ISA devices (if
I'm remembering correctly).  Also, you have the source code to many,
many existing drivers available to you in the kernel source tree if LDD3
is not enough.

-- 
-joshc

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: usb driver binding to the device

2010-09-12 Thread Bond
On Sun, Sep 12, 2010 at 9:21 PM, Josh Cartwright  wrote:

> Again, you can look through the slides.  Also you should read LDD3, as
> it covers alot of your questions.
>
> I am reading that book.
That book does talk about having a high level driver which is an interface
to the system calls but it does not talks about
Bus Star operations such as with different IO controllers on different
architectures.


Re: usb driver binding to the device

2010-09-12 Thread Josh Cartwright
On Sun, Sep 12, 2010 at 01:30:26PM +0530, Bond wrote:
> On Sat, Sep 11, 2010 at 11:31 PM, Josh Cartwright  wrote:
> 
> > To 'bind' to a device means that your driver is asserting control of the
> > device.
> 
> You mean  to say the driver is trying to take control of the device.

Yes.  If your driver is bound to a device, it has exclusive control over
it.

> > On the previous slide, a USB device ID table was created that lists the
> > IDs of the devices the driver supports.
> 
> Do you mean to say that it is possible that same driver support
> multiple devices?
> I have no clue of it.

Yes, it is quite common for a driver to control devices with different
IDs.

> > When your driver registers to
> > the USB core (via usb_register()),
> 
> Can you point me which slide in the presentation I gave link is meaning this
> type of thing.

I only briefly looked at the presentation, I'd suspect its in there, but
I'm not going to look for it for you, you can manage that yourself.
 
> > the core code looks at the list of unclaimed devices and your
> > provided ID table and calls your probe() for any matches.
> >
> > Your probe() callback is responsible for returning 0 if it wants to
> > 'bind' to the device, otherwise you return an error.
> >
> Is 0 for success.

Yes.

> I see a structure
> static struct  usb_driver {
> .owner :
> .name :
> .probe :
> .disconnect :
> .id_connect :
> 
> }
> I am not clear as how this structure has mapped to functions.

You're responsible for populating the members of this structure with
your callback functions, and then passing it to usb_register().

> What my understanding of writing a device driver till now from my search on
> Internet is
> 
> reserve a set of major and minor number
> define a file_operations structure associating to function pointers
> we need to define operations corresponding to system calls an application
> can apply

This would be enough for your driver to communicate to userspace, but it
is certainly not enough for your driver to communicate to your device
via usb.

> if I were to take above three points then on the link
> http://www.kroah.com/linux/talks/ols_2005_driver_tutorial/index.html
> which slide is doing that?

Again, you can look through the slides.  Also you should read LDD3, as
it covers alot of your questions.

-- 
-joshc

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: Shared Interrupt Lines [was IRQ_NONE or IRQ_HANDLED]

2010-09-12 Thread Josh Cartwright
On Sun, Sep 12, 2010 at 02:45:15PM +0200, Carlo Caione wrote:
> 
> Let's assume that I have registered two handlers on a shared IRQ.
> 
> request_irq(irqn, handler1, IRQF_SHARED, "first", dev1);
> request_irq(irqn, handler2, IRQF_SHARED, "second", dev2);
> 
> using two different dev1 and dev2 device structures.
> 
> When the interrupt is raised what is passed to handler1() and handler2() as 
> second
> argument? dev1 is passed to handler1() and dev2 to handler2() or both receive 
> the
> same value as pointer?

Your handler1 will be called with dev1 as the second argument, and your
handler2 will be called with dev2 as the second argument (but both will
be called with the asserted IRQ as their first argument).

> If each one receives the pointer to device structure indicated in 
> request_irq() 
> how this can help to differentiate between multiple device?

The provided dev pointer to request_irq() is not itself useful to the
core IRQ code, it doesn't do anything but store it away for use when
calling your handler function.

That being said, the IRQ-core core does need some way to differentiate
between handlers for shared IRQs.  This is necessary so that you can
selectively uninstall handlers.  This is also why the free_irq() takes
not only the IRQ#, but the dev_id (your dev1 or dev2) you registered
with.

Hopefully that answers your question. :)

-- 
-joshc

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: Cairo cross compile

2010-09-12 Thread DG
On Sun, Sep 12, 2010 at 4:33 AM, Giriprasad Deviprasad wrote:

> export
> LD_LIBRARY_PATH=/opt/asdlab/fontconfig/lib/:opt/asdlab/freetype/lib/:/opt/asdlab/atk/lib/:/opt/asdlab/glib/lib/:/opt/asdlab/pixman/lib/:/opt/asdlab/libxml2/lib/
>
> Giri
>
>
> How are you trying to compile Cairo?  It looks like fontconfig and freetype
> are both in a /opt/ directory, did you add these to your $LD_LIBRARY_PATH or
> are you passing in the directories with the -L option to the gcc compiler?
>
> Danny G
>
>
> Hmm... are you using pkg-config?  What are the outputs of

pkg-config --libs freetype2
pkg-config --libs fontconfig

This is the program that the configure script uses to find out if the
installed needed programs are the correct versions and where exactly they
reside.  This can be overridden by passing arguments into the configure
script, but pkg-config is intended to make it a lot easier.

It looks like you're installing packages into /opt/asdlab/ in their own
subdirectory, so you'll probably have to modify the $PKG_CONFIG_PATH
environment variable to point to each package's lib directory.  Let me know
if this helps at all

Danny G


Shared Interrupt Lines [was IRQ_NONE or IRQ_HANDLED]

2010-09-12 Thread Carlo Caione

On Sep 11, 2010, at 11:58 PM, Josh Cartwright wrote:
> Yes, if you have registered a handler on a shared IRQ, the first thing
> your handler must do is determine if it was your device which generated
> the interrupt.  If it wasn't your device, you return IRQ_NONE.
> 
> If you claim that you handled the interrupt by returning IRQ_HANDLED,
> but you really didn't do anything, there are situations where you will
> cause an interrupt storm and lock the system up tight (or at least one
> processor). Consider the following scenario:
> 
>   1. You've attached an interrupt to device A via request_irq().
>   2. Device A asserts the IRQ
>   3. You're handler is called
>   4. You don't quiesce the device, but you return IRQ_HANDLED
>   5. The core code sees that that you returned IRQ_HANDLED, so assumes the
>. device has unasserted the IRQ and unmasks the IRQ
>   6. But the device is still asserting the IRQ!
>   7. The IRQ core code jumps back to 3
>   8. ...lockup!
> 
> Now, if you've attached yourself to a shared IRQ chain that contains a
> legitimate handler for device A, you _might_ be okay returning
> IRQ_HANDLED (because the core code will still continue down the chain
> and call the real handler, which _will_ quiesce the device).  But don't do
> this.  Especially if you register your registering your handler w/
> IRQF_SAMPLE_RANDOM, as you'll likely compromise the entropy of the
> system.


Let's assume that I have registered two handlers on a shared IRQ.

request_irq(irqn, handler1, IRQF_SHARED, "first", dev1);
request_irq(irqn, handler2, IRQF_SHARED, "second", dev2);

using two different dev1 and dev2 device structures.

When the interrupt is raised what is passed to handler1() and handler2() as 
second
argument? dev1 is passed to handler1() and dev2 to handler2() or both receive 
the
same value as pointer?
If each one receives the pointer to device structure indicated in request_irq() 
how this can help to differentiate between multiple device?

Thank you,

--
Carlo Caione






--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecar...@nl.linux.org
Please read the FAQ at http://kernelnewbies.org/FAQ



Re: Cairo cross compile

2010-09-12 Thread Giriprasad Deviprasad
export 
LD_LIBRARY_PATH=/opt/asdlab/fontconfig/lib/:opt/asdlab/freetype/lib/:/opt/asdlab/atk/lib/:/opt/asdlab/glib/lib/:/opt/asdlab/pixman/lib/:/opt/asdlab/libxml2/lib/

Giri

How are you trying to compile Cairo?  It looks like fontconfig and freetype are 
both in a /opt/ directory, did you add these to your $LD_LIBRARY_PATH or are 
you passing in the directories with the -L option to the gcc compiler?


Danny G





Re: question about linked list implementation in kernel.h

2010-09-12 Thread Bond
On Sat, Sep 11, 2010 at 10:09 PM, Manish Katiyar  wrote:

> If you want some more details about this macro.
> http://www.spinics.net/lists/linux-usb-devel/msg11766.html
>
> Thanks but Manohars explanation was perfect for newbies like me.


Re: usb driver binding to the device

2010-09-12 Thread Bond
On Sat, Sep 11, 2010 at 11:31 PM, Josh Cartwright  wrote:

>
> To 'bind' to a device means that your driver is asserting control of the
> device.

You mean  to say the driver is trying to take control of the device.

>
> On the previous slide, a USB device ID table was created that lists the
> IDs of the devices the driver supports.

Do you mean to say that  it is  possible that same driver support multiple
devices?
I have no clue of it.

> When your driver registers to
> the USB core (via usb_register()),

Can you point me which slide in the presentation I gave link is meaning this
type of thing.

> the core code looks at the list of
> unclaimed devices and your provided ID table and calls your probe() for
> any matches.
>
> Your probe() callback is responsible for returning 0 if it wants to
> 'bind' to the device, otherwise you return an error.
>
> Is 0 for success.

I see a structure
static struct  usb_driver {
.owner :
.name :
.probe :
.disconnect :
.id_connect :

}
I am not clear as how this structure has mapped to functions.

What my understanding of writing a device driver till now from my search on
Internet is

reserve a set of major and minor number
define a file_operations structure associating to function pointers
we need to define  operations corresponding to system calls an application
can apply

if I were to take above three points then on the link
http://www.kroah.com/linux/talks/ols_2005_driver_tutorial/index.html
which slide is doing that?


Re: difference between read permission and executing permission

2010-09-12 Thread Bond
On Sat, Sep 11, 2010 at 10:58 PM, Parmenides wrote:

> Hi,
>
>   For a specified directory, we can go through it when the kernel
> parsing path, though we can not read it.

Hi can you be a bit more elaborate on this part I am also trying to
understand what you asked.