<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://script.spoken-tutorial.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=Embedded-Linux-Device-Driver%2FC2%2FExporting-Symbols-from-a-Module%2FEnglish</id>
		<title>Embedded-Linux-Device-Driver/C2/Exporting-Symbols-from-a-Module/English - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://script.spoken-tutorial.org/index.php?action=history&amp;feed=atom&amp;title=Embedded-Linux-Device-Driver%2FC2%2FExporting-Symbols-from-a-Module%2FEnglish"/>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Embedded-Linux-Device-Driver/C2/Exporting-Symbols-from-a-Module/English&amp;action=history"/>
		<updated>2026-05-13T17:27:31Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.17</generator>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=Embedded-Linux-Device-Driver/C2/Exporting-Symbols-from-a-Module/English&amp;diff=53017&amp;oldid=prev</id>
		<title>Nancyvarkey at 18:42, 20 July 2020</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Embedded-Linux-Device-Driver/C2/Exporting-Symbols-from-a-Module/English&amp;diff=53017&amp;oldid=prev"/>
				<updated>2020-07-20T18:42:13Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://script.spoken-tutorial.org/index.php?title=Embedded-Linux-Device-Driver/C2/Exporting-Symbols-from-a-Module/English&amp;amp;diff=53017&amp;amp;oldid=52991&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Nancyvarkey</name></author>	</entry>

	<entry>
		<id>https://script.spoken-tutorial.org/index.php?title=Embedded-Linux-Device-Driver/C2/Exporting-Symbols-from-a-Module/English&amp;diff=52991&amp;oldid=prev</id>
		<title>Nirmala Venkat: Created page with &quot; {| style=&quot;border-spacing:0;&quot; | style=&quot;border:0.5pt solid #000000;padding:0.176cm;&quot;| '''Visual cue''' | style=&quot;border:0.5pt solid #000000;padding:0.176cm;&quot;| '''Narration '''...&quot;</title>
		<link rel="alternate" type="text/html" href="https://script.spoken-tutorial.org/index.php?title=Embedded-Linux-Device-Driver/C2/Exporting-Symbols-from-a-Module/English&amp;diff=52991&amp;oldid=prev"/>
				<updated>2020-07-17T10:44:45Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot; {| style=&amp;quot;border-spacing:0;&amp;quot; | style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| &amp;#039;&amp;#039;&amp;#039;Visual cue&amp;#039;&amp;#039;&amp;#039; | style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| &amp;#039;&amp;#039;&amp;#039;Narration &amp;#039;&amp;#039;&amp;#039;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
{| style=&amp;quot;border-spacing:0;&amp;quot;&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| '''Visual cue'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| '''Narration '''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 1:&lt;br /&gt;
&lt;br /&gt;
Welcome slide:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Welcome to the spoken tutorial on '''Exporting Symbols from a Module.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 2:&lt;br /&gt;
&lt;br /&gt;
Learning objectives:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| In this tutorial, we will learn how to,&lt;br /&gt;
&lt;br /&gt;
* Export the '''symbols''' from a '''module'''.&lt;br /&gt;
* Import the '''symbols '''in a '''module'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 3:&lt;br /&gt;
&lt;br /&gt;
System Requirements:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| To record this tutorial, I am using,&lt;br /&gt;
&lt;br /&gt;
* '''VirtualBox '''version''' 5.2.'''&lt;br /&gt;
* '''Ubuntu Linux 18.04 LTS''' operating system.&lt;br /&gt;
* '''Linux kernel '''version''' 5.0.0-31 generic.'''&lt;br /&gt;
* '''gedit text editor.'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 4:&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| To follow this tutorial, you should be familiar with:&lt;br /&gt;
&lt;br /&gt;
* '''C programming language '''&lt;br /&gt;
* Basics of''' Linux kernel'''&lt;br /&gt;
&lt;br /&gt;
If not, then go through the '''C/C++''' and '''Linux''' spoken tutorials on this website&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 5:&lt;br /&gt;
&lt;br /&gt;
What is '''symbol'''?&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| '''What is symbol?'''&lt;br /&gt;
&lt;br /&gt;
* '''Symbol''' is either a '''variable''' or a '''function.'''&lt;br /&gt;
&lt;br /&gt;
* '''Symbol '''exported by a '''module''' become a part of the '''kernel symbol table'''. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Point to the '''directory''' and''' file''' in '''desktop'''&lt;br /&gt;
&lt;br /&gt;
Point to the''' files.'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Go to the '''DeviceDriver directory''' in the '''desktop '''which we have created earlier.&lt;br /&gt;
&lt;br /&gt;
Here, I have created a '''directory '''named''' ExportImportModule.'''&lt;br /&gt;
&lt;br /&gt;
In this '''directory''', I have saved three '''module files''' for demonstration.&lt;br /&gt;
&lt;br /&gt;
I have named them as '''export dot c, export dot h, import dot c.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide: &lt;br /&gt;
&lt;br /&gt;
Code files&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| * The '''files''' used in this tutorial are available in the '''Code Files '''link on this tutorial page.&lt;br /&gt;
* Please download and extract them&lt;br /&gt;
* Make a copy and then use them while practising&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Open the '''terminal'''&lt;br /&gt;
&lt;br /&gt;
Type &amp;gt;&amp;gt; '''cd Desktop/DeviceDriver/ExportImportModule'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Open the '''terminal''' by pressing '''ALT+Ctrl+T '''keys simultaneously.&lt;br /&gt;
&lt;br /&gt;
Press the '''Enter''' key after every command.&lt;br /&gt;
&lt;br /&gt;
Go to the directory''' ExportImportModule '''as shown here.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''gedit export.c'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us open the '''export.c module '''that exports the '''symbols.'''&lt;br /&gt;
&lt;br /&gt;
Type '''gedit space export dot c'''.&lt;br /&gt;
&lt;br /&gt;
Let us understand the '''code''' now.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Point to '''header files'''&lt;br /&gt;
&lt;br /&gt;
Open the '''terminal.'''&lt;br /&gt;
&lt;br /&gt;
'''Type &amp;gt;&amp;gt; clear'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| We have to include these '''header files''' at the start of a program.&lt;br /&gt;
&lt;br /&gt;
The''' export.h''' file contains the exported '''symbols''' declaration.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Open the '''export.h file'''&lt;br /&gt;
&lt;br /&gt;
Type &amp;gt;&amp;gt;''' gedit export.h'''&lt;br /&gt;
&lt;br /&gt;
Highlight '''module_function() '''and '''num'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us open the '''export.h''' file to see the '''source code.'''&lt;br /&gt;
&lt;br /&gt;
Here, we have declared an exported''' function module_function '''and a variable''' num.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Highlight''' EXPORT_SYMBOL(name),'''&lt;br /&gt;
&lt;br /&gt;
'''EXPORT_SYMBOL_GPL(name)'''&lt;br /&gt;
&lt;br /&gt;
Highlight '''EXPORT_SYMBOL_GPL(name)'''&lt;br /&gt;
&lt;br /&gt;
Highlight''' name'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us switch back to '''export.c module'''&lt;br /&gt;
&lt;br /&gt;
'''EXPORT_SYMBOL '''and''' EXPORT_SYMBOL_GPL '''are '''macros.'''&lt;br /&gt;
&lt;br /&gt;
These '''macros''' are used to export the '''symbols''' from a '''module''' to other '''modules.'''&lt;br /&gt;
&lt;br /&gt;
This''' macro '''exports the '''symbols '''to''' GPL_licensed modules '''only.&lt;br /&gt;
&lt;br /&gt;
The '''symbols''' must be exported in the global part of the '''module’s file.'''&lt;br /&gt;
&lt;br /&gt;
It makes them visible to the''' kernel.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Highlight '''EXPORT_SYMBOL(module_function)'''&lt;br /&gt;
Highlight '''module_function()'''&lt;br /&gt;
&lt;br /&gt;
Highlight '''printk''' message.&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| The '''export.c''' module exports '''module_function''' using '''EXPORT_SYMBOL macro'''.&lt;br /&gt;
&lt;br /&gt;
This '''function''' contains a '''printk''' message as shown here.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Highlight '''EXPORT_SYMBOL(num)'''&lt;br /&gt;
&lt;br /&gt;
Highlight '''int num = 100;'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Here, the '''num''' variable is exported using '''EXPORT_SYMBOL''' '''macro'''.&lt;br /&gt;
&lt;br /&gt;
The '''num''' '''variable''' is defined as shown here.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Highlight''' init_func() function'''&lt;br /&gt;
&lt;br /&gt;
Highlight''' exit_func() function'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| We have defined''' '''the''' init function''' and '''exit function''' with different '''printk''' messages. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Press &amp;gt;&amp;gt; '''Ctrl + S'''&lt;br /&gt;
&lt;br /&gt;
Click on the '''close.'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Now save the '''file '''and close the window.&lt;br /&gt;
&lt;br /&gt;
Switch back to the''' terminal.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''gedit import.c'''&lt;br /&gt;
&lt;br /&gt;
Press''' Enter'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us open''' import dot c module'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Highlight '''header files'''&lt;br /&gt;
&lt;br /&gt;
Highlight '''&amp;lt;nowiki&amp;gt;#include “export.h”&amp;lt;/nowiki&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| We have to include these '''header files.'''&lt;br /&gt;
&lt;br /&gt;
'''export dot h file''' contains the exported symbols declaration used by this''' module.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Highlight '''module_function()'''&lt;br /&gt;
&lt;br /&gt;
Highlight '''num'''&lt;br /&gt;
&lt;br /&gt;
Highlight''' init_func()'''&lt;br /&gt;
&lt;br /&gt;
Highlight''' exit_func()'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| This '''module '''uses the '''function''' and '''variable''' exported by the '''export dot c.'''&lt;br /&gt;
&lt;br /&gt;
'''module_function() '''and''' variable num '''are used in this module as shown.&lt;br /&gt;
&lt;br /&gt;
We have defined '''init function''' and '''exit function '''with different '''printk''' messages.&lt;br /&gt;
&lt;br /&gt;
Now save the''' file '''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Open the '''terminal.'''&lt;br /&gt;
&lt;br /&gt;
Type &amp;gt;&amp;gt;''' clear '''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Switch back to the '''terminal.'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''gedit Makefile'''&lt;br /&gt;
&lt;br /&gt;
Press '''Ctrl + S'''&lt;br /&gt;
&lt;br /&gt;
Click on the''' close.'''&lt;br /&gt;
&lt;br /&gt;
Open the''' terminal'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us now create a '''Makefile '''to compile the''' modules. '''&lt;br /&gt;
&lt;br /&gt;
Type '''gedit space Makefile'''&lt;br /&gt;
&lt;br /&gt;
Type the '''code '''as shown.&lt;br /&gt;
&lt;br /&gt;
'''Makefile''' is used to '''compile '''the''' export '''and '''import modules.'''&lt;br /&gt;
&lt;br /&gt;
Save''' '''and close the '''file. '''Switch back to the''' terminal.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt;''' sudo su'''&lt;br /&gt;
&lt;br /&gt;
Type &amp;gt;&amp;gt;''' password'''&lt;br /&gt;
&lt;br /&gt;
Type &amp;gt;&amp;gt;''' make all'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type '''sudo''' '''space''' '''su '''to be a''' superuser''' &lt;br /&gt;
&lt;br /&gt;
Now''', '''type the system '''password'''.&lt;br /&gt;
&lt;br /&gt;
Let us compile the '''modules.'''&lt;br /&gt;
&lt;br /&gt;
Type '''make space all'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''clear'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Clear the screen&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt;''' ls'''&lt;br /&gt;
&lt;br /&gt;
Highlight the output&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us check whether '''modules '''are compiled or not.&lt;br /&gt;
&lt;br /&gt;
Type '''ls '''&lt;br /&gt;
&lt;br /&gt;
As the '''modules '''are compiled, we can see their '''dot ko files '''are created here.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''clear.'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Clear the '''screen'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Next, let us copy the '''dot ko files '''of '''modules''' to the current '''kernel''' '''directory.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''cp export.ko /lib/modules/$(uname -r)'''&lt;br /&gt;
&lt;br /&gt;
Press Enter&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type the '''command '''as shown'''.'''&lt;br /&gt;
&lt;br /&gt;
It makes the '''export dot ko module '''visible to the''' depmod tool.'''&lt;br /&gt;
&lt;br /&gt;
Clear the screen.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''cp import.ko /lib/modules/$(uname -r)'''&lt;br /&gt;
&lt;br /&gt;
Press Enter&lt;br /&gt;
&lt;br /&gt;
Type &amp;gt;&amp;gt;''' clear'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Similarly, copy the '''import dot ko file. '''&lt;br /&gt;
&lt;br /&gt;
Type the '''command '''as shown'''.'''&lt;br /&gt;
&lt;br /&gt;
Clear the screen.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''depmod -a'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type''' depmod space hyphen a.'''&lt;br /&gt;
&lt;br /&gt;
This command will''' '''make the '''kernel recognize''' the newly added '''module.'''&lt;br /&gt;
&lt;br /&gt;
Here, the '''depmod tool '''generates a''' module dot dep file. '''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''modprobe import '''&lt;br /&gt;
&lt;br /&gt;
Highlight '''modprobe.'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us use a modprobe''' tool''' to load the '''modules''' into the '''kernel.'''&lt;br /&gt;
&lt;br /&gt;
Type''' modprobe space import '''&lt;br /&gt;
&lt;br /&gt;
Here, the '''import module '''depends on '''export module.'''&lt;br /&gt;
&lt;br /&gt;
The''' modprobe''' tool also loads the''' export dot ko module.'''&lt;br /&gt;
&lt;br /&gt;
Clear the screen.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''lsmod | head -5'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let’s check whether our '''modules '''are loaded into the '''kernel '''or not.&lt;br /&gt;
&lt;br /&gt;
Type''' lsmod space pipe space head space hyphen 5.'''&lt;br /&gt;
&lt;br /&gt;
We can see their names appear here as they are loaded into the '''kernel.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''clear'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Clear the''' screen.'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt;''' dmesg | tail -5'''&lt;br /&gt;
&lt;br /&gt;
Highlight the '''output'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us see the “loaded” '''printk''' messages of '''modules'''. &lt;br /&gt;
&lt;br /&gt;
Type''' dmesg space pipe space tail hyphen 5 '''&lt;br /&gt;
&lt;br /&gt;
It shows the''' printk '''messages of '''export '''and''' import module’s init function.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''clear'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Clear the '''screen'''.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''modprobe -r import'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us unload the '''modules''' from the '''kernel.'''&lt;br /&gt;
&lt;br /&gt;
Type''' modprobe space hyphen r space import'''&lt;br /&gt;
&lt;br /&gt;
The''' modprobe''' automatically unloads the '''export dot ko '''module.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''lsmod | head -5'''&lt;br /&gt;
&lt;br /&gt;
Show the output&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us check whether our '''modules '''are unloaded from the '''kernel''' or not.&lt;br /&gt;
&lt;br /&gt;
Type''' lsmod space pipe space head space hyphen 5. '''&lt;br /&gt;
&lt;br /&gt;
Here, both the '''module’s '''names are not in this list.&lt;br /&gt;
&lt;br /&gt;
It indicates that they are unloaded from the '''kernel '''successfully.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''clear'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Clear the '''screen'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt;''' dmesg | tail -3 '''&lt;br /&gt;
&lt;br /&gt;
Type &amp;gt;&amp;gt;''' clear'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Let us see “unloaded” '''printk''' messages of '''modules.'''&lt;br /&gt;
&lt;br /&gt;
Type '''dmesg space pipe space tail space hyphen 3. '''&lt;br /&gt;
&lt;br /&gt;
Now, we can see the messages from the '''exit function '''of both''' modules.'''&lt;br /&gt;
&lt;br /&gt;
Clear the screen.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''make clean'''&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type '''make space clean '''command to remove all '''files '''created by '''compilation.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Type &amp;gt;&amp;gt; '''exit'''&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| To go back to''' '''the''' regular user, '''type '''exit.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| &lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| With this, we come to the end of this tutorial. Let us summarize.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 6:&lt;br /&gt;
&lt;br /&gt;
Summary:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| In this tutorial, we learnt how to&lt;br /&gt;
&lt;br /&gt;
* Export the '''symbols''' from a '''module'''.&lt;br /&gt;
* Import the '''symbols '''in a '''module'''.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 7:&lt;br /&gt;
&lt;br /&gt;
Assignment:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| As an assignment,&lt;br /&gt;
&lt;br /&gt;
# Open the '''export.c file'''&lt;br /&gt;
# Change the '''printk message''' of '''module_function.'''&lt;br /&gt;
# Compile the '''export '''and''' import modules.'''&lt;br /&gt;
# Load the modules using the modprobe''' tool.'''&lt;br /&gt;
# See the output using '''dmesg command.'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 8:&lt;br /&gt;
&lt;br /&gt;
About Spoken Tutorial Project:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| * The video at the following link summarizes the Spoken Tutorial project.&lt;br /&gt;
&lt;br /&gt;
* Please download and watch it.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 9:&lt;br /&gt;
&lt;br /&gt;
Spoken Tutorial workshops :&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| The''' Spoken Tutorial Project''' Team:&lt;br /&gt;
&lt;br /&gt;
* conducts workshops and&lt;br /&gt;
* gives certificates.&lt;br /&gt;
&lt;br /&gt;
For more details, please write to us.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 10:&lt;br /&gt;
&lt;br /&gt;
Forum questions :&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Please post your timed queries in this forum.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 11:&lt;br /&gt;
&lt;br /&gt;
Forum for specific questions :&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| * Do you have any general or technical questions on Embedded Linux Device Driver?&lt;br /&gt;
* Please visit the FOSSEE forum and post your question.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 12:&lt;br /&gt;
&lt;br /&gt;
Acknowledgment:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| The Spoken Tutorial Project is funded by MHRD, Government of India.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| Slide 13:&lt;br /&gt;
&lt;br /&gt;
Thank you slide:&lt;br /&gt;
| style=&amp;quot;border:0.5pt solid #000000;padding:0.176cm;&amp;quot;| This tutorial has been contributed by FOSSEE and Spoken Tutorial Project, IIT Bombay. &lt;br /&gt;
&lt;br /&gt;
This is Mayuri Panchakshari signing off.&lt;br /&gt;
&lt;br /&gt;
Thanks for watching.&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nirmala Venkat</name></author>	</entry>

	</feed>