All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] isr
@ 2006-07-10  8:07 Keinen Namen
  2006-07-10  8:30 ` Jan Kiszka
  0 siblings, 1 reply; 6+ messages in thread
From: Keinen Namen @ 2006-07-10  8:07 UTC (permalink / raw)
  To: xenomai

Hi I useing Xenomai 2.1 and the native skin 

I want create a intr in kernel space with rt_intr_create, the 4th argument is the pointer is the ISR.

My Question is which form does the ISR must have

rt_isr_t myisr ( ??? )
{
...
}

Regards
Memory
-- 


Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-help] isr
  2006-07-10  8:07 [Xenomai-help] isr Keinen Namen
@ 2006-07-10  8:30 ` Jan Kiszka
  2006-07-10  8:45   ` Keinen Namen
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Kiszka @ 2006-07-10  8:30 UTC (permalink / raw)
  To: Keinen Namen; +Cc: xenomai

[-- Attachment #1: Type: text/plain, Size: 603 bytes --]

Keinen Namen wrote:
> Hi I useing Xenomai 2.1 and the native skin 
> 
> I want create a intr in kernel space with rt_intr_create, the 4th argument is the pointer is the ISR.
> 
> My Question is which form does the ISR must have
> 
> rt_isr_t myisr ( ??? )
> {
> ...
> }
> 

int my_isr(rt_intr_t *intr);

That's indeed undocumented, you had to browse the code for this
information. :-/

[Note: unless you are writing some specialised or experimental code,
developing drivers over the RTDM skin is recommended now. This aims at
unifying the device interfaces for all skins.]

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Re: [Xenomai-help] isr
  2006-07-10  8:30 ` Jan Kiszka
@ 2006-07-10  8:45   ` Keinen Namen
  2006-07-10  8:58     ` Jan Kiszka
  0 siblings, 1 reply; 6+ messages in thread
From: Keinen Namen @ 2006-07-10  8:45 UTC (permalink / raw)
  To: Jan Kiszka; +Cc: xenomai

Sorry here is my source code.

My Problem ist how can I call the ISR.

Regards Memory


#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>

#include <native/intr.h>

MODULE_DESCRIPTION("My kernel module");
MODULE_AUTHOR("Nobody");
MODULE_DESCRIPTION("Dei Mudda");
MODULE_LICENSE("my own");


RT_INTR my_rt_intr;

int helloworld_isr(rt_intr_t *intr){
	printk( KERN_ALERT "IRQ\n");
	return IRQ_HANDLED;
}

struct file_operations helloworld_fops = {
	.owner 		= THIS_MODULE,
	.llseek		= NULL,
	.read		= NULL,
	.write		= NULL,
	.readdir	= NULL,
	.poll		= NULL,
	.ioctl		= NULL,
	.mmap		= NULL,
	.open		= NULL,
	.flush		= NULL,
	.release	= NULL,
	.fsync		= NULL,
	.fasync		= NULL,
	.lock		= NULL,
	.readv		= NULL,
	.writev		= NULL,
};


static int helloworld_init_module(void) {
	int x;
	printk( KERN_ALERT "Module helloworld init startet Version 0.1\n" );
	x = rt_intr_create(&my_rt_intr,"ein Name",SIU_INT_TIMER2,&helloworld_isr,NULL,0);
	if(!x){
		printk( KERN_ALERT "Interrupt erfolgreich erstellt\n");
		if(!(rt_intr_enable(&my_rt_intr))){
			printk( KERN_ALERT "Interrupt erfolgreich aktiviert\n");
		}
	}else{
		printk( KERN_ALERT "Interrupt Erstellung fehlgeschlagen %i\n",x);
	}
}

static void helloworld_exit_module(void) {

	if(!(rt_intr_disable(&my_rt_intr))){
		printk( KERN_ALERT "Interrupt Cleared !\n" );
		if(!(rt_intr_delete(&my_rt_intr))){
	 		printk(KERN_ALERT "Interrupt deleted\n" );
		}
	}

	printk( KERN_ALERT "Module helloworld exit\n" );
}

module_init(helloworld_init_module);
module_exit(helloworld_exit_module);

-------- Original-Nachricht --------
Datum: Mon, 10 Jul 2006 10:30:16 +0200
Von: Jan Kiszka <jan.kiszka@domain.hid>
An: Keinen Namen <GSM909@domain.hid>
Betreff: Re: [Xenomai-help] isr

> Keinen Namen wrote:
> > Hi I useing Xenomai 2.1 and the native skin 
> > 
> > I want create a intr in kernel space with rt_intr_create, the 4th
> argument is the pointer is the ISR.
> > 
> > My Question is which form does the ISR must have
> > 
> > rt_isr_t myisr ( ??? )
> > {
> > ...
> > }
> > 
> 
> int my_isr(rt_intr_t *intr);
> 
> That's indeed undocumented, you had to browse the code for this
> information. :-/
> 
> [Note: unless you are writing some specialised or experimental code,
> developing drivers over the RTDM skin is recommended now. This aims at
> unifying the device interfaces for all skins.]
> 
> Jan
> 

-- 


Echte DSL-Flatrate dauerhaft für 0,- Euro*!
"Feel free" mit GMX DSL! http://www.gmx.net/de/go/dsl


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [Xenomai-help] isr
  2006-07-10  8:45   ` Keinen Namen
@ 2006-07-10  8:58     ` Jan Kiszka
  2006-07-10 11:40       ` [Xenomai-help] ISR Again Keinen Namen
  0 siblings, 1 reply; 6+ messages in thread
From: Jan Kiszka @ 2006-07-10  8:58 UTC (permalink / raw)
  To: Keinen Namen; +Cc: xenomai

[-- Attachment #1: Type: text/plain, Size: 3408 bytes --]

Keinen Namen wrote:
> Sorry here is my source code.
> 
> My Problem ist how can I call the ISR.

Well, the basic idea behind IRQs is that the hardware "call" them for
you, isn't it? :)

See /proc/xenomai/irq if something is happening on your IRQ line.

> 
> Regards Memory
> 
> 
> #include <linux/kernel.h>
> #include <linux/init.h>
> #include <linux/module.h>
> #include <linux/fs.h>
> 
> #include <native/intr.h>
> 
> MODULE_DESCRIPTION("My kernel module");
> MODULE_AUTHOR("Nobody");
> MODULE_DESCRIPTION("Dei Mudda");
> MODULE_LICENSE("my own");
> 
> 
> RT_INTR my_rt_intr;
> 
> int helloworld_isr(rt_intr_t *intr){
> 	printk( KERN_ALERT "IRQ\n");
> 	return IRQ_HANDLED;
> }
> 
> struct file_operations helloworld_fops = {
> 	.owner 		= THIS_MODULE,
> 	.llseek		= NULL,
> 	.read		= NULL,
> 	.write		= NULL,
> 	.readdir	= NULL,
> 	.poll		= NULL,
> 	.ioctl		= NULL,
> 	.mmap		= NULL,
> 	.open		= NULL,
> 	.flush		= NULL,
> 	.release	= NULL,
> 	.fsync		= NULL,
> 	.fasync		= NULL,
> 	.lock		= NULL,
> 	.readv		= NULL,
> 	.writev		= NULL,
> };

What's this for? Keep in mind that mixing Linux file operations with
Xenomai is almost always not cleanly working. That's also what RTDM is
for: providing a stripped down file operations interface to real-time users.

> 
> 
> static int helloworld_init_module(void) {
> 	int x;
> 	printk( KERN_ALERT "Module helloworld init startet Version 0.1\n" );
> 	x = rt_intr_create(&my_rt_intr,"ein Name",SIU_INT_TIMER2,&helloworld_isr,NULL,0);

Are you sure your hardware is already set up to fire on SIU_INT_TIMER2?

If you are looking for some working examples, check the new irqbench
test over RS232 or the timer-related part of Hannes' example driver on
http://www.captain.at/xenomai-real-time-driver-example-driver-source-code.php

What's your goal, BTW?

> 	if(!x){
> 		printk( KERN_ALERT "Interrupt erfolgreich erstellt\n");
> 		if(!(rt_intr_enable(&my_rt_intr))){
> 			printk( KERN_ALERT "Interrupt erfolgreich aktiviert\n");
> 		}
> 	}else{
> 		printk( KERN_ALERT "Interrupt Erstellung fehlgeschlagen %i\n",x);
> 	}
> }
> 
> static void helloworld_exit_module(void) {
> 
> 	if(!(rt_intr_disable(&my_rt_intr))){
> 		printk( KERN_ALERT "Interrupt Cleared !\n" );
> 		if(!(rt_intr_delete(&my_rt_intr))){
> 	 		printk(KERN_ALERT "Interrupt deleted\n" );
> 		}
> 	}
> 
> 	printk( KERN_ALERT "Module helloworld exit\n" );
> }
> 
> module_init(helloworld_init_module);
> module_exit(helloworld_exit_module);
> 
> -------- Original-Nachricht --------
> Datum: Mon, 10 Jul 2006 10:30:16 +0200
> Von: Jan Kiszka <jan.kiszka@domain.hid>
> An: Keinen Namen <GSM909@domain.hid>
> Betreff: Re: [Xenomai-help] isr
> 
>> Keinen Namen wrote:
>>> Hi I useing Xenomai 2.1 and the native skin 
>>>
>>> I want create a intr in kernel space with rt_intr_create, the 4th
>> argument is the pointer is the ISR.
>>> My Question is which form does the ISR must have
>>>
>>> rt_isr_t myisr ( ??? )
>>> {
>>> ...
>>> }
>>>
>> int my_isr(rt_intr_t *intr);
>>
>> That's indeed undocumented, you had to browse the code for this
>> information. :-/
>>
>> [Note: unless you are writing some specialised or experimental code,
>> developing drivers over the RTDM skin is recommended now. This aims at
>> unifying the device interfaces for all skins.]
>>
>> Jan
>>
> 



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 250 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Xenomai-help] ISR Again
  2006-07-10  8:58     ` Jan Kiszka
@ 2006-07-10 11:40       ` Keinen Namen
  2006-07-10 14:00         ` [Xenomai-help] " Bernhard Walle
  0 siblings, 1 reply; 6+ messages in thread
From: Keinen Namen @ 2006-07-10 11:40 UTC (permalink / raw)
  To: xenomai

hi Again

witch from have a RT_ISR?

I simply want a Programm that run helloworld_isr when Interrupt 13 is fired.

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>

#include <native/intr.h>

MODULE_DESCRIPTION("My kernel module");
MODULE_AUTHOR("Nobody");
MODULE_DESCRIPTION("Dei Mudda");
MODULE_LICENSE("my own");


RT_INTR my_rt_intr;

static int helloworld_isr(rt_intr_t *intr){
	printk( KERN_ALERT "IRQ\n");
	return IRQ_HANDLED;
}

static int helloworld_init_module(void) {
	int x;
	printk( KERN_ALERT "Module helloworld init startet Version 0.1\n" );
	
	x = rt_intr_create(&my_rt_intr,"einName",13,helloworld_isr,NULL,0);
	if(!x){
		printk( KERN_ALERT "Interrupt erfolgreich erstellt\n");
	
		if(!(rt_intr_enable(&my_rt_intr))){
			printk( KERN_ALERT "Interrupt erfolgreich aktiviert\n");
		}
	}else{
		printk( KERN_ALERT "Interrupt Erstellung fehlgeschlagen %i\n",x);
	}
}

static void helloworld_exit_module(void) {

	if(!(rt_intr_disable(&my_rt_intr))){
		printk( KERN_ALERT "Interrupt Cleared !\n" );
		if(!(rt_intr_delete(&my_rt_intr))){
	 		printk(KERN_ALERT "Interrupt deleted\n" );
		}
	}

	printk( KERN_ALERT "Module helloworld exit\n" );
}

module_init(helloworld_init_module);
module_exit(helloworld_exit_module);
-- 


"Feel free" – 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Xenomai-help] Re: ISR Again
  2006-07-10 11:40       ` [Xenomai-help] ISR Again Keinen Namen
@ 2006-07-10 14:00         ` Bernhard Walle
  0 siblings, 0 replies; 6+ messages in thread
From: Bernhard Walle @ 2006-07-10 14:00 UTC (permalink / raw)
  To: xenomai

Hi Keinen,

"Keinen Namen" <GSM909@domain.hid> [2006-07-10]:
> hi Again
> 
> witch from have a RT_ISR?
> 
> I simply want a Programm that run helloworld_isr when Interrupt 13 is fired.

Why not using the RTDM?

Just use:

  rtdm_irq_t  rt_irq_handle;

  err = rtdm_irq_request(&rt_irq_handle, 13, helloworld_isr, 0,
		"your_driver", NULL);
  if (unlikely(err != 0)) {
 	/* error handling here */
  }

  err = rtdm_irq_enable(&rt_irq_handle);
  if (unlikely(err != 0)) {
	/* error handling here */
  }

And in the cleanup function:

  rtdm_irq_free(&rt_irq_handle);

And the ISR:
 
  static int helloworld_isr(rtdm_irq_t *irq_handle)
  {
        return RTDM_IRQ_HANDLED;
  }


Regards,
  Bernhard
-- 
"Mankind invented the atomic bomb, but no mouse would ever construct a 
mousetrap."
        -- Albert Einstein



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2006-07-10 14:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-10  8:07 [Xenomai-help] isr Keinen Namen
2006-07-10  8:30 ` Jan Kiszka
2006-07-10  8:45   ` Keinen Namen
2006-07-10  8:58     ` Jan Kiszka
2006-07-10 11:40       ` [Xenomai-help] ISR Again Keinen Namen
2006-07-10 14:00         ` [Xenomai-help] " Bernhard Walle

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.