<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rss [<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">]>
<rss version="0.92" xml:base="http://www.nirendra.net/cms">
<channel>
 <title>Nirendra Awasthi - Nirendra</title>
 <link>http://www.nirendra.net/cms/taxonomy/term/6/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>common.h</title>
 <link>http://www.nirendra.net/cms/src/common.h</link>
 <description>&lt;pre&gt;
#define NTRIALS 100000&lt;br /&gt;
#define BUFF_LEN 100&lt;br /&gt;
#define FILE_NAME "/home/nirendra/test.html"&lt;br /&gt;
#define measure_time(code) \&lt;br /&gt;
	for(i=0; i &lt; NTRIALS; i++) { \&lt;br /&gt;
		rdtscl(ini); \&lt;br /&gt;
		code; \&lt;br /&gt;
		rdtscl(end); \&lt;br /&gt;
		now = end - ini; \&lt;br /&gt;
		if(now &lt; best) best = now; \&lt;br /&gt;
	}&lt;/p&gt;
&lt;p&gt;static void parse_html(char *html, char *text)&lt;br /&gt;
{&lt;br /&gt;
	int hcount = 0, tcount = 0;&lt;br /&gt;
	int tag=0;&lt;br /&gt;
	/*Parse buffer to remove html tags*/&lt;br /&gt;
	for(hcount = 0; html[hcount] != '\0' &amp;#038;&amp;#038; html[hcount]; hcount++)&lt;br /&gt;
	{&lt;br /&gt;
		if(html[hcount] == '&lt;') /*HTML tag begins*/&lt;br /&gt;
			tag = 1;&lt;br /&gt;
		if(!tag)&lt;br /&gt;
			text[tcount++] = html[hcount];&lt;br /&gt;
		if(html[hcount] == '&gt;') /*HTML tag ends*/&lt;br /&gt;
			tag = 0;&lt;br /&gt;
	}&lt;br /&gt;
	text[tcount] = '\0';&lt;br /&gt;
}
&lt;/pre&gt;
</description>
 <pubDate>Sun, 23 Jul 2006 03:25:51 -0700</pubDate>
</item>
<item>
 <title>uhtmlparser.c</title>
 <link>http://www.nirendra.net/cms/src/uhtmlparser.c</link>
 <description>&lt;pre&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/stat.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/msr.h&amp;gt;&lt;/p&gt;
&lt;p&gt;#include "common.h"&lt;/p&gt;
&lt;p&gt;int main()&lt;br /&gt;
{&lt;br /&gt;
	unsigned long ini, end, now, best, tsc;&lt;br /&gt;
	int i;&lt;br /&gt;
	int fd;&lt;br /&gt;
	int nhtml = 0, ntext = 0;&lt;br /&gt;
	char *html, *text;&lt;br /&gt;
	html = malloc(BUFF_LEN);&lt;br /&gt;
	text = malloc(BUFF_LEN);&lt;br /&gt;
	memset(html, 0, BUFF_LEN);&lt;br /&gt;
	memset(text, 0, BUFF_LEN);&lt;/p&gt;
&lt;p&gt;	/*time rdsc, i.e. no code*/&lt;br /&gt;
	best =~ 0;&lt;br /&gt;
	measure_time(0);&lt;br /&gt;
	tsc = best;&lt;br /&gt;
	printf("Time taken for no code: %ld\n", tsc);&lt;/p&gt;
&lt;p&gt;	/*Measure time for reading a file*/&lt;br /&gt;
	fd = open(FILE_NAME, O_RDONLY, 0600);&lt;br /&gt;
	if(!fd){&lt;br /&gt;
		printf("Error opening file\n");&lt;br /&gt;
		exit(1);&lt;br /&gt;
	}&lt;br /&gt;
	best = ~0;&lt;br /&gt;
	measure_time(read(fd, html, 1000));&lt;br /&gt;
	printf("Time taken by read: %li\n", best - tsc);&lt;br /&gt;
	parse_html(html, text);&lt;br /&gt;
	printf("Parsed text: %s\n", text);&lt;br /&gt;
}
&lt;/pre&gt;
</description>
 <pubDate>Sun, 23 Jul 2006 03:26:46 -0700</pubDate>
</item>
<item>
 <title>khtmlparser.c</title>
 <link>http://www.nirendra.net/cms/src/khtmlparser.c</link>
 <description>&lt;pre&gt;
#include &amp;lt;linux/init.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/module.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/init.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/syscalls.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/fs.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/file.h&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;asm/uaccess.h&amp;gt;&lt;br /&gt;
MODULE_LICENSE("Dual BSD/GPL");&lt;/p&gt;
&lt;p&gt;#include "common.h"&lt;/p&gt;
&lt;p&gt;static int khtmlparser_init(void)&lt;br /&gt;
{&lt;br /&gt;
	mm_segment_t fs;&lt;br /&gt;
	unsigned long ini, end, now, best, tsc;&lt;br /&gt;
	int i;&lt;br /&gt;
	struct file *fd;&lt;br /&gt;
	char *html;&lt;br /&gt;
	char *text;&lt;br /&gt;
	html = kzalloc(BUFF_LEN, GFP_KERNEL);&lt;br /&gt;
	text = kzalloc(BUFF_LEN, GFP_KERNEL);&lt;br /&gt;
	best = ~0;&lt;br /&gt;
	measure_time(0);&lt;br /&gt;
	tsc = best;&lt;br /&gt;
	printk(KERN_INFO "Time taken for no code: %ld\n", tsc);&lt;/p&gt;
&lt;p&gt;	/*Measure time of reading a file*/&lt;br /&gt;
	/*Prepare to invoke system call*/&lt;br /&gt;
	fs = get_fs();	/*Save previous value*/&lt;br /&gt;
     	set_fs(get_ds());	/*use kernel limit*/&lt;br /&gt;
	/*Call system call*/&lt;br /&gt;
	fd = filp_open(FILE_NAME, O_RDONLY, 0600);&lt;br /&gt;
	if(IS_ERR(fd)){&lt;br /&gt;
			printk(KERN_INFO "flip_open returned an error\n");&lt;br /&gt;
			return(-EINVAL);&lt;br /&gt;
	}&lt;br /&gt;
	if(fd-&amp;gt;f_op &amp;#038;&amp; fd-&amp;gt;f_op-&amp;gt;read){&lt;br /&gt;
		best = ~0;&lt;br /&gt;
		measure_time(fd-&amp;gt;f_op-&amp;gt;read(fd, html, 1000, &amp;#038;fd-&amp;gt;f_pos));&lt;br /&gt;
		printk(KERN_INFO "Time taken by read: %ld\n", best-tsc);&lt;br /&gt;
		parse_html(html, text); /*Parse html to text*/&lt;br /&gt;
		printk(KERN_INFO "Parsed text: %s", text);&lt;br /&gt;
	}&lt;br /&gt;
	if(fd) filp_close(fd, NULL);&lt;br /&gt;
	set_fs(fs);	/*restore before returning to userspace*/&lt;br /&gt;
	return -EINVAL;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;/*Never used*/&lt;br /&gt;
static void khtmlparser_exit(void)&lt;br /&gt;
{&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;module_init(khtmlparser_init);&lt;br /&gt;
module_exit(khtmlparser_exit);
&lt;/pre&gt;
</description>
 <pubDate>Sun, 23 Jul 2006 03:27:26 -0700</pubDate>
</item>
</channel>
</rss>
