Re: Guidelines to plug NE2K driver in ELKS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Marc-F.,

this is what I could make out so far. The functions that support "select" are implemented in elks/fs/select.c. KTCP does the following select call: „select(sfd > tcpdevfd ? sfd + 1 : tcpdevfd + 1, &fdset, NULL, NULL, tv);“ In there sfd is the file descriptor for slip and tcpdevfd is the file descriptor for the tcpdev device.

The tcpdev device has made its tcp_select() function known to the kernel using the tcp_fops structure via the register_chrdev() function. The kernel calls this function when loading the module. So the kernel can call tcp_select() to determine if there is anything to do.

After slip opens the ttySx device, the kernel will query the tty_select() function in the arch/i86/drivers/char/ntty driver. I think that again calls rs_ioctl() in serial.c. The structure "tty" which is returned by this function contains a pointer to the queue of received chars and the select function in ntty uses that to determine if data has been received and is available for a read call.

One could probably just make a quick and dirty solution and poll the network card code for data from the ktcp_run() loop without select. The slip_process function just returns if no data has been read.

To follow the Linux structure, however, you would have to write an „ethx“ device driver which supports a select call from the kernel.

I am about to finish an "Introduction to ELKS" document this week. The document is intended to provide a quick start for new users/developers of ELKS. This document contains a chapter how to write a kernel mode driver for ELKS although is not typically part of an introduction. If you have not written such a driver yet this could be of help for developing an „ethx“ device driver.

Georg

-----Ursprüngliche Nachricht----- From: Marc-F. LUCCA-DANIAU
Sent: Sunday, February 5, 2017 12:12 PM
To: ELKS
Subject: Guidelines to plug NE2K driver in ELKS

Hello all,

As suggested by Alan and Jody, I delivered a standalone code to drive
the NE2K in /elks/arch/i86/drivers/net as a first step, and I intend to
connect it to the low end of KTCP (in parallel of SLIP) as a second step.

But because KTCP needs a "selectable" device to operate, and because I
am not at ease with the select / poll implementation in ELKS, could I
have some guidelines to integrate the current standalone code ?

Thanks,

MFLD


--
To unsubscribe from this list: send the line "unsubscribe linux-8086" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-8086" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel]     [Linux ia64]     [DCCP]     [Linux for ARM]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux