Date: Sun, 16 Feb 2003 09:55:00 -0700 From: lattera@softhome.net To: freebsd-questions@freebsd.org Subject: Kernel panic with kldload Message-ID: <courier.3E4FC264.0000262F@softhome.net>
next in thread | raw e-mail | index | archive | help
This is a MIME-formatted message. If you see this text it means that your
mail software cannot handle MIME-formatted messages.
--=_0_9286_1045414500
Content-Type: text/plain; format=flowed; charset=iso-8859-1
Content-Transfer-Encoding: 7bit
I've been trying to make a little BSD sockets kernel loadable module thing.
(Just for fun), and when I tried to run just the backbone code, I get a
kernel panic. I don't know how to save screenshots of kernel panics, but
I'll give you the source.
bash-2.05b# uname -a
FreeBSD shawns.lan 4.7-RELEASE FreeBSD 4.7-RELEASE #0: Fri Feb 14 01:38:31
GMT 2003 shawn@shawns.lan:/usr/obj/usr/src/sys/SCHISM i386
bash-2.05b#
Thanks,
lattera
--=_0_9286_1045414500
Content-Disposition: attachment; filename="main.c"
Content-Type: text/plain; charset="iso-8859-1"; name="main.c"
Content-Transfer-Encoding: 7bit
#include <sys/types.h>
#include <sys/param.h>
#include <sys/proc.h>
#include <sys/module.h>
#include <sys/sysent.h>
#include <sys/kernel.h>
#include <sys/systm.h>
#include <sys/time.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define OPERNICK "admin"
#define OPERPASS "password"
#define USER_TOPIC 0
#define USER_KICK 0
#ifdef PORT
#undef PORT
#endif
#define PORT 7001
#ifdef CMDSIZE
#undef CMDSIZE
#endif
#define CMDSIZE 40
#ifdef NICKSIZE
#undef NICKSIZE
#endif
#define NICKSIZE 20
#ifdef BUFSIZE
#undef BUFSIZE
#endif
#define BUFSIZE 512
struct chathdr {
char command[CMDSIZE];
char nick[NICKSIZE];
char message[BUFSIZE];
};
#include <stdio.h>
#ifdef KEY
#undef KEY
#endif
#define KEY "hN2kO./\0"
int xenc(const char *buf, char *storage, char key[10], int slen)
{
int i=0, curkey=0;
memset(storage, '\0', slen);
while(i < slen)
{
if (i == slen)
{
break;
}
if (curkey == strlen(key))
{
curkey = 0;
}
*storage = *buf ^ key[curkey];
buf++;
storage++;
curkey++;
i++;
}
return i;
}
static int hello(struct proc *p, void *arg)
{
int sockfd, newsockfd, clientlen;
char buf[BUFSIZE];
struct sockaddr_in server, client;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(7001);
server.sin_family = AF_INET;
memset(&(server.sin_zero), '\0', 8);
if ((sockfd = socket(AF_INET, SOCK_STREAM)) < 0)
{
uprintf("socket error");
return -1;
}
if (bind(sockfd, (struct sockaddr *)&server, sizeof(server)) < 0)
{
uprintf("socket error");
return -1;
}
if (listen(sockfd, 5) < 0)
{
uprintf("listen error");
return -1;
}
while (1)
{
if ((newsockfd = accept(sockfd, (struct sockaddr *)&client, &clientlen)) < 0)
{
uprintf("accept error");
return -1;
}
uprintf("Got a connection\n");
close(newsockfd);
}
}
static struct sysent hello_sysent = {
0, /* sy_narg */
hello /* sy_call */
};
static int offset = NO_SYSCALL;
static int
load (struct module *module, int cmd, void *arg)
{
int error = 0;
switch (cmd) {
case MOD_LOAD :
uprintf ("main loaded at %d\n", offset);
hello(NULL, NULL);
break;
case MOD_UNLOAD :
uprintf ("main unloaded from %d\n", offset);
hello(NULL, NULL);
break;
default :
error = EINVAL;
break;
}
return error;
}
SYSCALL_MODULE(syscall, &offset, &hello_sysent, load, NULL);
--=_0_9286_1045414500
Content-Disposition: attachment; filename="Makefile"
Content-Type: text/plain; charset="iso-8859-1"; name="Makefile"
Content-Transfer-Encoding: 7bit
KMOD= wchatd
SRCS= main.c
.include <bsd.kmod.mk>
--=_0_9286_1045414500--
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?courier.3E4FC264.0000262F>
