设备文件是用来代表物理设备的。多数物理设备是用来进行输出或输入的,所以必须由某种机制使得内核中的设备驱动从进程中得到输出送给设备。这可以通过打开输出设备文件并且写入做到,就想写入一个普通文件。在下面的例子里,这由device_write实现。
这不是总能奏效的。设想你与一个连向modem的串口(技是你有一个内猫,从CPU看来它也是作为一个串口实现,所以你不需要认为这个设想太困难)。最自然要做的事情就是使用设备文件把内容写到modem上(无论用modem命令还是电话线)或者从modem读信息(同样可以从modem命令回答或者通过电话线)。但是这留下的问题是当你需要和串口本身对话的时候需要怎样做?比如发送数据发送和接收的速率。
回答是Unix使用一个叫做ioctl(input output control的简写)的特殊函数。每个设备都有自己的ioctl命令,这个命令可以是ioctl读的,也可以是写的,也可以是两者都是或都不是。Ioctl函数由三个参数调用:适当设备的描述子,ioctl数,和一个长整型参数,可以赋予一个角色用来传递任何东西。
Ioctl数对设备主码、ioctl类型、编码、和参数的类型进行编码。Ioctl数通常在头文件由一个宏调用(_IO,_IOR,_IOW或_IOWR----决定于类型)。这个头文件必须包含在使用ioctl(所以它们可以产生正确的ioctl's)程序和内核模块(所以它可以理解)中。在下面的例子里,这个头文件是chardev.h,使用它的程序是ioctl.c。
如果你希望在你自己的内核模块中使用ioctl's,最好去接受一分正式的ioctl职位,这样你就可以得到别人的ioctl's,或者他们得到你,你就可以知道哪里出了错误。如果想得到更多的信息,到'documentation/ioctl-number.txt'中查看内核源文件树。
ex chardev.c
/* chardev.c
*
* Create an input/output character device
*/
/* Copyright (C) 1998-99 by Ori Pomerantz */
/* The necessary header files */
/* Standard in kernel modules */
#include /* Were doing kernel work */
#include /* Specifically, a module */
/* Deal with CONFIG_MODVERSIONS */
#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include
#endif
/* For character devices */
/* The character device definitions are here */
#include
/* A wrapper which does next to nothing at
* at present, but may help for compatibility
* with future versions of Linux */
#include
/* Our own ioctl numbers */
#include "chardev.h"
/* In 2.2.3 /usr/include/linux/version.h includes a
* macro for this, but 2.0.35 doesnt - so I add it
* here if necessary. */
#ifndef KERNEL_VERSION
#define KERNEL_VERSION(a,b,c) ((a)*65536+(b)*256+(c))
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
#include /* for get_user and put_user */
#endif
#define SUCCESS 0
/* Device Declarations ******************************** */
/* The name for our device, as it will appear in
* /proc/devices */
#define DEVICE_NAME "char_dev"
/* The maximum length of the message for the device */
#define BUF_LEN 80
/* Is the device open right now? Used to prevent
* concurent access into the same device */
static int Device_Open = 0;
/* The message the device will give when asked */
static char Message[BUF_LEN];
/* How far did the process reading the message get?
* Useful if the message is larger than the size of the
* buffer we get to fill in device_read. */
static char *Message_Ptr;
/* This function is called whenever a process attempts
* to open the device file */
static int device_open(struct inode *inode,
struct file *file)
{
#ifdef DEBUG
printk ("device_open(%p)\n", file);
#endif
/* We dont want to talk to two processes at the
* same time */
if (Device_Open)
return -EBUSY;
/* If this was a process, we would have had to be
* more careful here, because one process might have
* checked Device_Open right before the other one
* tried to increment it. However, were in the
* kernel, so were protected against context switches.
*
* This is NOT the right attitude to take, because we
* might be running on an SMP box, but well deal with
* SMP in a later chapter.
*/
Device_Open++;
/* Initialize the message */
Message_Ptr = Message;
MOD_INC_USE_COUNT;
return SUCCESS;
}
/* This function is called when a process closes the
* device file. It doesnt have a return value because
* it cannot fail. Regardless of what else happens, you
* should always be able to close a device (in 2.0, a 2.2
* device file could be impossible to close). */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
static int device_release(struct inode *inode,
struct file *file)
#else
static void device_release(struct inode *inode,
struct file *file)
#endif
{
#ifdef DEBUG
printk ("device_release(%p,%p)\n", inode, file);
#endif
/* Were now ready for our next caller */
Device_Open --;
MOD_DEC_USE_COUNT;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
return 0;
#endif
}
/* This function is called whenever a process which
* has already opened the device file attempts to
* read from it. */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
static ssize_t device_read(
struct file *file,
char *buffer, /* The buffer to fill with the data */
size_t length, /* The length of the buffer */
loff_t *offset) /* offset to the file */
#else
static int device_read(
struct inode *inode,
struct file *file,
char *buffer, /* The buffer to fill with the data */
int length) /* The length of the buffer
* (mustnt write beyond that!) */
#endif
{
/* Number of bytes actually written to the buffer */
int bytes_read = 0;
#ifdef DEBUG
printk("device_read(%p,%p,%d)\n",
file, buffer, length);
#endif
/* If were at the end of the message, return 0
* (which signifies end of file) */
if (*Message_Ptr == 0)
return 0;
/* Actually put the data into the buffer */
while (length && *Message_Ptr) {
/* Because the buffer is in the user data segment,
* not the kernel data segment, assignment wouldnt
* work. Instead, we have to use put_user which
* copies data from the kernel data segment to the
* user data segment. */
put_user(*(Message_Ptr++), buffer++);
length --;
bytes_read ++;
}
#ifdef DEBUG
printk ("Read %d bytes, %d left\n",
bytes_read, length);
#endif
/* Read functions are supposed to return the number
* of bytes actually inserted into the buffer */
return bytes_read;
}
/* This function is called when somebody tries to
* write into our device file. */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
static ssize_t device_write(struct file *file,
const char *buffer,
size_t length,
loff_t *offset)
#else
static int device_write(struct inode *inode,
struct file *file,
const char *buffer,
int length)
#endif
{
int i;
#ifdef DEBUG
printk ("device_write(%p,%s,%d)",
file, buffer, length);
#endif
for(i=0; i
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
get_user(Message[i], buffer+i);
#else
Message[i] = get_user(buffer+i);
#endif
Message_Ptr = Message;
/* Again, return the number of input characters used */
return i;
}
/* This function is called whenever a process tries to
* do an ioctl on our device file. We get two extra
* parameters (additional to the inode and file
* structures, which all device functions get): the number
* of the ioctl called and the parameter given to the
* ioctl function.
*
* If the ioctl is write or read/write (meaning output
* is returned to the calling process), the ioctl call
* returns the output of this function.
*/
int device_ioctl(
struct inode *inode,
struct file *file,
unsigned int ioctl_num,/* The number of the ioctl */
unsigned long ioctl_param) /* The parameter to it */
{
int i;
char *temp;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
char ch;
#endif
/* Switch according to the ioctl called */
switch (ioctl_num) {
case IOCTL_SET_MSG:
/* Receive a pointer to a message (in user space)
* and set that to be the devices message. */
/* Get the parameter given to ioctl by the process */
temp = (char *) ioctl_param;
/* Find the length of the message */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
get_user(ch, temp);
for (i=0; ch && ibr temp++) i++,> get_user(ch, temp);
#else
for (i=0; get_user(temp) && ibr temp++) i++,> ;
#endif
/* Dont reinvent the wheel - call device_write */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
device_write(file, (char *) ioctl_param, i, 0);
#else
device_write(inode, file, (char *) ioctl_param, i);
#endif
break;
case IOCTL_GET_MSG:
/* Give the current message to the calling
* process - the parameter we got is a pointer,
* fill it. */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
i = device_read(file, (char *) ioctl_param, 99, 0);
#else
i = device_read(inode, file, (char *) ioctl_param,
99);
#endif
/* Warning - we assume here the buffer length is
* 100. If its less than that we might overflow
* the buffer, causing the process to core dump.
*
* The reason we only allow up to 99 characters is
* that the NULL which terminates the string also
* needs room. */
/* Put a zero at the end of the buffer, so it
* will be properly terminated */
put_user(\, (char *) ioctl_param+i);
break;
case IOCTL_GET_NTH_BYTE:
/* This ioctl is both input (ioctl_param) and
* output (the return value of this function) */
return Message[ioctl_param];
break;
}
return SUCCESS;
}
/* Module Declarations *************************** */
/* This structure will hold the functions to be called
* when a process does something to the device we
* created. Since a pointer to this structure is kept in
* the devices table, it cant be local to
* init_module. NULL is for unimplemented functions. */
struct file_operations Fops = {
NULL, /* seek */
device_read,
device_write,
NULL, /* readdir */
NULL, /* select */
device_ioctl, /* ioctl */
NULL, /* mmap */
device_open,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
NULL, /* flush */
#endif
device_release /* a.k.a. close */
};
/* Initialize the module - Register the character device */
int init_module()
{
int ret_val;
/* Register the character device (atleast try) */
ret_val = module_register_chrdev(MAJOR_NUM,
DEVICE_NAME,
&Fops);
/* Negative values signify an error */
if (ret_val < 0) {
printk ("%s failed with %d\n",
"Sorry, registering the character device ",
ret_val);
return ret_val;
}
printk ("%s The major device number is %d.\n",
"Registeration is a success",
MAJOR_NUM);
printk ("If you want to talk to the device driver,\n");
printk ("youll have to create a device file. \n");
printk ("We suggest you use:\n");
printk ("mknod %s c %d 0\n", DEVICE_FILE_NAME,
MAJOR_NUM);
printk ("The device file name is important, because\n");
printk ("the ioctl program assumes thats the\n");
printk ("file youll use.\n");
return 0;
}
/* Cleanup - unregister the appropriate file from /proc */
void cleanup_module()
{
int ret;
/* Unregister the device */
ret = module_unregister_chrdev(MAJOR_NUM, DEVICE_NAME);
/* If theres an error, report it */
if (ret < 0)
printk("Error in module_unregister_chrdev: %d\n", ret);
}
ex chardev.h
/* chardev.h - the header file with the ioctl definitions.
*
* The declarations here have to be in a header file,
* because they need to be known both to the kernel
* module (in chardev.c) and the process calling ioctl
* (ioctl.c)
*/
#ifndef CHARDEV_H
#define CHARDEV_H
#include
/* The major device number. We cant rely on dynamic
* registration any more, because ioctls need to know
* it. */
#define MAJOR_NUM 100
/* Set the message of the device driver */
#define IOCTL_SET_MSG _IOR(MAJOR_NUM, 0, char *)
/* _IOR means that were creating an ioctl command
* number for passing information from a user process
* to the kernel module.
*
* The first arguments, MAJOR_NUM, is the major device
* number were using.
*
* The second argument is the number of the command
* (there could be several with different meanings).
*
* The third argument is the type we want to get from
* the process to the kernel.
*/
/* Get the message of the device driver */
#define IOCTL_GET_MSG _IOR(MAJOR_NUM, 1, char *)
/* This IOCTL is used for output, to get the message
* of the device driver. However, we still need the
* buffer to place the message in to be input,
* as it is allocated by the process.
*/
/* Get the nth byte of the message */
#define IOCTL_GET_NTH_BYTE _IOWR(MAJOR_NUM, 2, int)
/* The IOCTL is used for both input and output. It
* receives from the user a number, n, and returns
* Message[n]. */
/* The name of the device file */
#define DEVICE_FILE_NAME "char_dev"
#endif
ex ioctl.c
/* ioctl.c - the process to use ioctls to control the
* kernel module
*
* Until now we could have used cat for input and
* output. But now we need to do ioctls, which require
* writing our own process.
*/
/* Copyright (C) 1998 by Ori Pomerantz */
/* device specifics, such as ioctl numbers and the
* major device file. */
#include "chardev.h"
#include /* open */
#include /* exit */
#include /* ioctl */
/* Functions for the ioctl calls */
ioctl_set_msg(int file_desc, char *message)
{
int ret_val;
ret_val = ioctl(file_desc, IOCTL_SET_MSG, message);
if (ret_val < 0) {
printf ("ioctl_set_msg failed:%d\n", ret_val);
exit(-1);
}
}
ioctl_get_msg(int file_desc)
{
int ret_val;
char message[100];
/* Warning - this is dangerous because we dont tell
* the kernel how far its allowed to write, so it
* might overflow the buffer. In a real production
* program, we would have used two ioctls - one to tell
* the kernel the buffer length and another to give
* it the buffer to fill
*/
ret_val = ioctl(file_desc, IOCTL_GET_MSG, message);
if (ret_val < 0) {
printf ("ioctl_get_msg failed:%d\n", ret_val);
exit(-1);
}
printf("get_msg message:%s\n", message);
}
ioctl_get_nth_byte(int file_desc)
{
int i;
char c;
printf("get_nth_byte message:");
i = 0;
while (c != 0) {
c = ioctl(file_desc, IOCTL_GET_NTH_BYTE, i++);
if (c < 0) {
printf(
"ioctl_get_nth_byte failed at the %dth byte:\n", i);
exit(-1);
}
putchar(c);
}
putchar(\n);
}
/* Main - Call the ioctl functions */
main()
{
int file_desc, ret_val;
char *msg = "Message passed by ioctl\n";
file_desc = open(DEVICE_FILE_NAME, 0);
if (file_desc < 0) {
printf ("Cant open device file: %s\n",
DEVICE_FILE_NAME);
exit(-1);
}
ioctl_get_nth_byte(file_desc);
ioctl_get_msg(file_desc);
ioctl_set_msg(file_desc, msg);
close(file_desc);
}
72.179.167.* 于 2007-09-07 03:00:25发表:
841c283239cc1bd564fb3c09094c5fdc http://tavernadegliartisti.dlqpew.org/imola-comune/ http://ispettoratodellavorodimantova.npxbkv.org/volo-guatemala-city/ http://nero-seppia-ricetta.yojewt.org/ http://contatore-nel-blog.yojewt.org/ http://gambero-rosso-class-editore.vozlau.org/ http://cornetta-pc-fai-te.ufftiy.org/ http://gioco-tipo-habbo.hhidlx.org/ http://istatprontosoccorsoitaliadatoistat.dlqpew.org/villa-lucrezia-ristorante-napoli/ http://ispettoratodellavorodimantova.npxbkv.org/motore-vespa-50/ http://hiphopnapoli.npxbkv.org/portico-del-seminario/ ef5da0821261872f3a177fbd4ce2e9fc
125.142.100.* 于 2007-09-06 09:36:14发表:
22c908fc36264c777e963b68b6ac76f0 http://www.cide.au.edu/audasaforum/viewtopic.php?t=458 http://www.cide.au.edu/audasaforum/viewtopic.php?t=458 http://payson.tulane.edu/techeval/forums/viewtopic.php?t=74 http://www.cide.au.edu/audasaforum/viewtopic.php?t=458 http://www.international.ucf.edu/myphp/community/viewtopic.php?t=124 http://transatlantic.ipo.asu.edu/forum/viewtopic.php?t=208 http://www.rstm.edu/phpBB/viewtopic.php?t=1450 http://www.international.ucf.edu/myphp/community/viewtopic.php?t=124 http://www.cide.au.edu/audasaforum/viewtopic.php?t=458 http://transatlantic.ipo.asu.edu/forum/viewtopic.php?t=208 d950163e2bc04fe30175aa17834ab13d
85.152.248.* 于 2007-09-05 20:43:44发表:
96501cb2751441ae033dfe8d404e376b https://www.cslu.ogi.edu/forum/viewtopic.php?t=2656 http://myweb.msoe.edu/~chaversa/phpBB2/viewtopic.php?t=2012 https://www.cslu.ogi.edu/forum/viewtopic.php?t=2656 https://www.cslu.ogi.edu/forum/viewtopic.php?t=2657 http://www.grahi.upc.edu/ERAD2006/phpBB2/viewtopic.php?t=6839 http://www.mat.ucsb.edu/CUI/viewtopic.php?t=1142 https://www.cslu.ogi.edu/forum/viewtopic.php?t=2657 http://forum.jalc.edu/phpBB2/viewtopic.php?t=2267 https://www.cslu.ogi.edu/forum/viewtopic.php?t=2656 http://www.grahi.upc.edu/ERAD2006/phpBB2/viewtopic.php?t=6839 db62d9d137e7999ef0c8bbd27991ea41
190.16.42.* 于 2007-09-05 06:33:11发表:
15af14e99f96416ae7db179f2f75a28d http://satira-inter.dfmviz.info/ http://location-per-matrimonio-a-bergamo.dfmviz.info/ http://hostess-di-terra.dfmviz.info/ http://casal-fiumanese.dfmviz.info/ http://punzoni-italiano-argento.dfmviz.info/ http://spot-televisivo-parmigiano-reggiano.dfmviz.info/ http://gioco-pirotecnici-vendita-online.dfmviz.info/ http://azienda-autonoma-soggiorno-prato-nevoso.dfmviz.info/ http://armoniche-bocca-hohner.dfmviz.info/ http://video-piu-pazzo-mondo.dfmviz.info/ 21817dd0dbd87cb119a7471ab31fd121
83.11.233.* 于 2007-08-16 02:49:29发表:
0d83a92e966a397ea8990116a94c946c http://carriera-aza-petrovic.ddxsak.com/ http://giancarlo-acciaro.ddxsak.com/ http://morale-chiesa.akrmtn.com/ http://probabilita-contagio-aids.akrmtn.com/ http://promozione-nuova-gestione-telefonino.zpvztz.com/ http://lezione-scuola-calcio-pulcino.zpvztz.com/ http://pubblicita-2000.flroxk.com/ http://scienza-degli-alimenti.ddxsak.com/ http://concorso-provincia-tn.ddxsak.com/ http://costo-gasolio-agricolo.akrmtn.com/ f79720dbd018955dfd9068d527cd2031
201.208.165.* 于 2007-07-24 23:33:19发表:
81c66c06e020310260536d7d924d2559 http://titolo-iii.ppdpwx.biz/ http://gioco-pc-sparatutto.ygvhik.biz/ http://ente-tutela-vino-di-romagna.iuatju.biz/ http://classifiche-calcistiche.ygvhik.biz/ http://forbici-per-parrucchieri.ygvhik.biz/ http://appartamento-affito-roma.tzlnou.biz/ http://territorio-provinciale.iuatju.biz/ http://video-di-eva-henger.enadzh.biz/ http://ma-soprattutto-ascoltare-studio3.ygvhik.biz/ http://albergo-disponibile-notte-capodanno-provincia-novara.enadzh.biz/ 69fae163d26a9b1682339a4eb6fc4ad9
83.198.205.* 于 2007-07-23 13:57:07发表:
8c7d610e3bc7cd2b9ab9e53777fbc1cf http://loredana-cannata-alta.jnbwct.org/ http://supporto-auto-originale-nokia-n70.gbdrme.org/ http://annuncio-baratto-giornale.gbdrme.org/ http://suoneria-mosquito-gratis.mnkcbe.org/ http://punto-vendita-maniglia-metal-style-calabria.pvaeyo.org/ http://temi-svolti-sul-dolce-stil-novo.jnbwct.org/ http://hotel-a-tunisi.vywyuh.org/ http://concessionario-automobile.pvaeyo.org/ http://grandangolo-vw-lw3007e.gbdrme.org/ http://titty-gatto-silvestro.pvaeyo.org/ eb89aa2351bfb8dd061b0dc25061dcdb
24.138.224.* 于 2007-07-20 21:44:40发表:
7e7aeaafaaa7dfa67b2c1ee02f454b26 http://dispensematematica.kcqdnd.org/siti-web-padova/ http://adeguamentolegge196.kcqdnd.org/portatile-12-apple/ http://cisterne.chohqh.org/scarico-beverly-250/ http://nonlasciarsiandaresensocolpaautoerotismo.ghoouy.org/fiat-panda-scheda-tecnica/ http://incontrigaymilano.pykkxx.org/sodio-lattato/ http://clubaironeelba.cerfmd.org/tomtom6-italia-map-download/ http://intimofemminiledolcegabbana.ghoouy.org/hotel-accettano-gatto/ http://esempiorelazionetirocinio.ghoouy.org/lavoro-ticino-svizzera/ http://indirizziutili.qemqrg.org/tullio-abbate-34/ http://passerafica.nfnzro.org/i-greci-el-irrazionale/ b8fb7d84153cc5c69600cbe1497734b2
190.39.161.* 于 2007-07-19 12:35:11发表:
3eab546d39308d73ad18b2a2b6ba7d2a http://contratto-nazionale-impresa-di-pulizia.jnesky.in/ http://moto-storica-palermo.jnesky.in/ http://giovan-battista-della-porta.kmyeyh.com/ http://modifica-nds.miwcjz.com/ http://camper-parigi.fzhoas.in/ http://cambio-serramenti.iznvge.in/ http://annuncio-casting.kvpzig.com/ http://herbie-maggiolino.vbglda.com/ http://stipa-pubblicita-ascoli-piceno.jvzulp.in/ http://figli-portatori-di-handicap.jnesky.in/ b8a12f78e2ab8d9c8e5e94f78e975725
85.217.214.* 于 2007-07-18 00:32:45发表:
d3f680443796e5bdd71c6c4006c3b8f6 http://barbierialessandro.copdkj.org/gioco-scaricare-gratis-monopolio/ http://fareilpresepe.cdvduz.org/38-infradito-silla-silla/ http://coppiamotore.eebsig.org/vergine-carattere-nati/ http://casaoikos.cdvduz.org/acuto-grave/ http://boxestoria.vniybd.org/sincronizzazione-orologio-windows/ http://piazzapopoloromacapodanno2007.copdkj.org/pepperone-san-giovanni-lupatoto/ http://hoteldirivaligure.nxaqjj.org/grafico-piramide-alimentare/ http://installatoresatellite.qbmkwd.org/accesso-non-consentito-a-questa-sessione/ http://programmatraduzionefrancese.copdkj.org/derivate-elementari/ http://calendarionomedeisanto2007.copdkj.org/omas-penna/ 8ea4fcdde1a965ef95e68187f350c6f6
200.126.246.* 于 2007-07-17 18:37:46发表:
http://74417b6c17ba9d5f41f4440d86e1b9d2-t.xkktxb.org 74417b6c17ba9d5f41f4440d86e1b9d2 http://74417b6c17ba9d5f41f4440d86e1b9d2-b1.xkktxb.org 74417b6c17ba9d5f41f4440d86e1b9d2 http://74417b6c17ba9d5f41f4440d86e1b9d2-b3.xkktxb.org 8d1f2bfe3cbc5359328d95464cab8b7c
218.37.250.* 于 2007-07-16 15:35:20发表:
ab55dccc5ae1394585d225461a3cfd5b http://liguria-legge-38-2001.xsixxz.biz/ http://scuola-materne-messina.wdexfm.biz/ http://chiesa-metodista.jmncsw.biz/ http://erreffe-folklore.knhtou.com/ http://approdo-di-ulisse-club.xmjviq.com/ http://calcolare-vincita-al-lotto.gwedas.com/ http://storia-sviluppo-europa-200.fuypfr.biz/ http://canzoni-migliori.fuypfr.biz/ http://vetro-curvo.drncar.biz/ http://pecora-informazione.fuypfr.biz/ 8cff813cd5cdf93d908a9e43c4704dad
190.82.181.* 于 2007-07-15 07:41:32发表:
24af0a4702d2b587e0a6493b49445c26 http://catamaranivela.havjsk.org/minimi-retributivi-lavoro-domestico/ http://mattinafamiglialucasardella.havjsk.org/tolstoj-vivono-uomo/ http://assettiperfuoristrada.jlmwbv.org/biografia-petronio-diletta/ http://innomedellarosa.mongnb.org/stampa/ http://pouflettoroma.mqyawz.org/dimensioni-foglio-a2/ http://determinareiniziogravidanza.vozulo.org/ispettorato-del-lavoro-lecco/ http://webacquistoappartamentoreggioemilia.kqjhpm.org/andrea-berton/ http://hotelfamigliamarileva.mongnb.org/cosa-piu-importante-pallavolo/ http://scenaincontrodeifilmfamosi.seklde.org/uncle-scrooge-action-figura/ http://nokia5300caratteristica.vozulo.org/software-acconciature/ a875aa102e91579b074fe29fa7a13e81
201.250.24.* 于 2007-07-14 00:32:05发表:
4ec2e9de0ba1b61502af3cca7eab3186 http://legge-quadro-cooperazione-sviluppo.njylwy.org/ http://pasquetta-marche.benlzg.org/ http://andrea-berton-chef.iwfpha.org/ http://specchiere-bagno.mpxxqr.org/ http://art-605-codice-procedura-civile.ubetii.org/ http://piatto-carne-pasticciata.aoonyx.org/ http://tre-brescia.aoonyx.org/ http://marco-pantano-foto.mhjqva.org/ http://corso-assistente-sanitario-roma.lldpzx.org/ http://collegamenti-da-roma.hihuft.org/ 8c2a5fabd273020cebfaea52010ee4bb
91.117.145.* 于 2007-07-12 17:47:31发表:
f09f81abe646cd47cfdddc0ad04b3e6f http://chicco-passeggino-pickup.ahffzb.org/ http://giacomo-leopardi-primo-amore-traduzione.jdcyvo.org/ http://rizzo-rocco-fidal-puglia.uwlbfm.org/ http://contestazione-dominio-net.uwlbfm.org/ http://www-forummonza-info.mtfkmx.org/ http://comune-gallio-vi.mtfkmx.org/ http://simile-norton-ghost.qpjnvy.org/ http://analisi-tecnica-piaggio.bmfcxx.org/ http://affresco-amorini.bmfcxx.org/ http://ladri-auto.qpjnvy.org/ d8d97f68bc274489b372d34e17b3a169
211.206.9.* 于 2007-07-11 10:54:47发表:
9899afae019b6f909a68b096ee259c66 http://16.ska4aj.net/pagina40.html http://15.ska4aj.net/pagina59.html http://13.ska4aj.net/pagina69.html http://8.ska4aj.net/pagina68.html http://21.ska4aj.org/pagina11.html http://19.skachaj.org/pagina97.html http://20.ska4aj.com/pagina70.html http://7.ska4aj.com/pagina20.html http://7.ska4aj.net/pagina71.html http://3.skachaj.org/pagina71.html 53f688e2d0ae01a48f96ad8f8181d4f6
213.8.32.* 于 2007-07-10 02:04:27发表:
8247681911d3fc9b130aa2cfd9150c70 http://custodia-nokia-61.dkzfpf.org/ http://vigilanza-bologna.gtimmg.org/ http://abbigliamento-camicie.dkzfpf.org/ http://mahjong-gioco.dkzfpf.org/ http://progetto-fondazione-platea.gtimmg.org/ http://villetta-affitto-san-vito-capo.gtimmg.org/ http://siesta-mar-maiorca.atersl.org/ http://spartito-banda-ernani.dkzfpf.org/ http://sostituzione-candele.gtimmg.org/ http://racconto-sesso-treno.gtimmg.org/ 9b45a0bdde2cb75e21785d72ae4741f7
84.121.221.* 于 2007-07-08 16:24:29发表:
dfa683a0fe12fb0c48a8f91b2491876d http://custodiapalm.ikwuex.org/televisore-combi-winnie-the-pooh/ http://com-extcalendar-inurl-u.jcddfk.org/ http://tuttoperinternet-it-karaoke-index-html.zgagyw.org/ http://afterhoursfillmore.ikwuex.org/impossibile-scaricare-0-interfaccia-non-supportata/ http://mousetastieracordless.sphfph.org/annuncio-gatto-sacro-di-birmania/ http://trenoromagenova.sphfph.org/esempi-oracle/ http://gioco-di-final-fantasy.jcddfk.org/ http://www-provincia-di-modena.jcddfk.org/ http://panasonic-climatizzatore-multisplit.djrtlt.org/ http://progettazione-stand-fieristici.zgqwur.org/ cda9cd96507def8918671c23330ec82a
85.86.154.* 于 2007-07-07 10:32:27发表:
1fee8f13240549660fa98262d6a9719e http://salmonenorvegia.skzbln.org/attivita-lavorativa-svolgevano-sumeri/ http://signore-italiane.xxbtpu.org/ http://diagnosidifferenzialemedicina.ilbeox.org/annuncio-di-lavoro-in-montagna/ http://laschiena.ilbeox.org/il-castello-medioevale/ http://calendario-2007-divieto-circolazione-mezzo-pesante.bubajm.org/ http://tecnicheequine.ilbeox.org/c-n-comitato-nazionale-economia-lavoro/ http://aggiornamento-software-v200.vtjfdr.org/ http://jamesmorrisonyougivesomethingtesto.eoklgx.org/festivita-natalizie/ http://non-s-disfare.vtjfdr.org/ http://giu-buco.mcgzbb.org/ 268af5f4294519a6b3a74dbb7c6fdf14
190.72.15.* 于 2007-07-02 11:58:11发表:
acb0cf556eb1b2c10dc4375660976d51 http://sorbetto-al-limone-bimby-tm31.innltr.org.in/ http://permesso-soggiorno-revoca-precedente-espulsione.omulsq.org.in/ http://misura-dei-piede-paris-hilton.omulsq.org.in/ http://obiettivo-matematica-geometria-scuola-media.mksqkw.org.in/ http://c-t-p-provincia-arezzo.kfxrfs.org.in/ http://masterizzatore-esterno-ai-prezzo-piu-basso.omulsq.org.in/ http://lavastoviglie-rex-sp-860-n.oaxzml.org.in/ http://corso-di-laurea-in-organizzazione.hhknox.org.in/ http://palermo-chiusura-negozio-31-12-2006.pifljm.org.in/ http://olimpiadi-scienza-naturale-fase-regionale.oaxzml.org.in/ 8a848390101f52442387e8806988b168
24.203.124.* 于 2007-07-01 07:46:57发表:
e831784aac4e84d87de3f10e2a9224d6 http://fotocampanellinoinpeterpan.gdedkb.org/ http://scuolamediaarturotoscaninidichiari.jfjurx.org/ http://www.ristoranteprezzoromazonapiazzanavona.qrxvou.org/ http://www.commissionediprimaistanzainvaliditacivile.zawphd.org/ http://quelliconlacodacom.hrjksn.org/ http://autonomiaregioneprimatitolov.hrjksn.org/ http://www.perditasanguedopofecibambino.tgydoj.org/ http://circolazioneartoinferioridiabeteriabilitazionefisioterapia.jfjurx.org/ http://mariagabriellaperronegiudicemanduria.gdedkb.org/ http://www.crmsviluppoprogettofedeltarelazionecliente.hrjksn.org/ 246f5573f09449eb624440463d221fca
221.161.195.* 于 2007-06-30 04:40:12发表:
e39dab42a6aa1fc1a353fd8f37320776 http://elenco-dei-sito-italiano-escort-boy.arooqy.org/ http://eserciziosvoltochimicaorganica2.uytput.org/spaces-live-cosenza-provincia-cosenza/ http://hannoveritaliamobiletorinoprovincia.ojbsss.org/versioni-tradotte-di-cornelio-nepote/ http://bob-smith-ragazzo-amava-shakespeare.ukizsc.org/ http://concorsointernazionaledanzamicheleabateit.ojbsss.org/emule-plus-ultima-versione-free/ http://20dicembre1975n79.zcsdiw.org/castelli-per-matrimoni-in-lombardia/ http://media-com-mp4-2gb-lettore-multimediale.chohld.org/ http://lagodeipontinibagnoromagna.uytput.org/celebrita-vip-donna-famosa-nuda/ http://the-lion-sleeps-tonight-gratis.arooqy.org/ http://importare-dato-excel-excel-ado.chohld.org/ 242a24eaaf2d8b6d338dfc62711422de
62.57.196.* 于 2007-06-29 04:04:50发表:
cde770961c9f7205da23487438cfd91d http://personaggiostoricinati2907.fxbzoa.org/gioco-chi-vuol-essere-milionario-gratis/ http://valenzia-iglesia-de-santa-catalina.yigqdu.org/ http://orarioaperturapubblicoufficiogiudiziariocancellerie.bcpmpo.org/sentenza-consiglio-stato-falsi-titolo-curriculum/ http://corso-di-laurea-in-biotecnologia.jmcomw.org/ http://sl500amgivaesposta.bcpmpo.org/carlo-lucarelli-condannati-ingiustamente-morte/ http://produzioneugellodacquapressione.hwdwav.org/quadro-cantiere-cei-17-13-4/ http://sl500amgivaesposta.bcpmpo.org/bologna-calcio-site-sport-msn-it/ http://trailermodulecavalloinox2cavallo.aklifa.org/famiglia-associativa-di-preghiera-e-carita/ http://legge-21-novembre-1967-n-1149.csirgp.org/ http://nuova-ss-125-2-lotto.negvzz.org/ 24974b376644b5034250f73cecc2d1d6
70.80.234.* 于 2007-06-28 00:31:59发表:
67055dd85be69a526b8db84de1f7888f http://differenza-modalita-vr-video-dvd-recorder.hutfyw.org/ http://lido-spina-villa-appartamento-vendita-privato.aifeuw.org/ http://annali-chimica-vol-93-12.oulmpk.org/ http://foto-film-save-the-last-dance.plzgum.org/ http://webalice-it-lucaevivi-baccoeisuoiporcelli-index-html.gdcsng.org/ http://scheda-acquisizione-video-usb2-0.vfkyqi.org/ http://benetton-collezione-autunno-inverno-2006.oacpyn.org/ http://politecnico-torino-facolta-scienza-comunicazione.tkanof.org/ http://corsi-di-internet-a-roma.plzgum.org/ http://banca-san-paolo-torino-agenzia-8.vpvnno.org/ dff758ad4d024eb641677108bbbbea97
201.250.212.* 于 2007-06-26 22:27:16发表:
def28378bcfa89ba0a3d2e63e219a35b http://medicina-fuoco-di-sant-antonio.ynkpgu.org/ http://2087datoreprovagiurisprudenzaappello.swmvze.org/negozi-di-divani-a-milano/ http://legge-per-il-diritto-di-prelazione.ozetoz.org/ http://gazzettaufficialedellaregionecampania.mutsoq.org/tuning-accessorio-vendita-on-line/ http://chiavari-centro-storico-appartamento-terrazza-vendesi.ynkpgu.org/ http://ipromessisposiedonabbondio.wvyart.org/assistenza-cellulare-san-benedetto-tronto/ http://centrobenesseremonticellobza.mutsoq.org/calcolo-dell-indice-massa-corporea/ http://lap-dance-milano-metropolitana-sesso.ozetoz.org/ http://buonopastoaccettatiformapagamentosupermercato.wvyart.org/foto-gratis-donna-matura-figa/ http://scarica-versione-0-7-itunes.euhlah.org/ ac74524788537f28ae4c90c357df5e97
200.93.11.* 于 2007-06-25 21:40:48发表:
d4059fee28983c770d54610e91ea094a http://laureainscienzadellecomunicazioni.ggrflx.org/dove-vai-se-il-vizietto/ http://bene-ammortizzabili-inferiori-516-00-novita.wlwpdt.org/ http://san-felice-circeo-banda-musicale.ddbpnz.org/ http://banca-credito-cooperativo-carugate-filiale-brugherio.wlwpdt.org/ http://foto-camera-digitale-fujifilm-s3500.abpato.org/ http://obblighifiscaleintermediariassicurazioneiscrittisezione.ggrflx.org/sesso-donna-matura-free-gratis-video/ http://la-nuova-scienza-della-mente.fcgpay.org/ http://casacuraathenasr.wyselb.org/legge-regionale-23-2005-regione-sardegna/ http://associazionecamperistisoleamicoit.ggrflx.org/buona-pasqua-barbie-lago-cigno-barbie/ http://cassolalaragazzadibube.ggrflx.org/quanto-amore-sei-eros-ramazzotti/ 245153f8fc5ca6b7c7f1325ac3918a81
83.55.191.* 于 2007-06-24 20:03:16发表:
6ccda762b8ac50778af391c8cdd31d50 http://dublinoshanahansonthegreen.shopio.org/lite-raffaello-balzo-ed-aceto/ http://interventochirurgicialmidollovertebrale.yiatbe.org/montepaschi-se-ri-t-spa/ http://colonnasonorathehillsmtv.savnjk.org/convertitore-video-gp-3-mp4-gratis/ http://htp-ibox-tim-it-mms.ztbpeb.org/ http://fotodanblackplanetfunk.shopio.org/18-anni-frasi-di-augurio/ http://nomineart4044997.yiatbe.org/gazzetta-ufficiale-n-291-2003/ http://suoneria-polifoniche-cellulare-samsung-sgh-v200.fdkwms.org/ http://impresasoafvg.savnjk.org/schema-punto-croce-precious-moment/ http://famiglia-borghese-al-tempo-bernini.iolfyk.org/ http://cercocamerainaffittoa.shopio.org/t-shirt-roberto-cavallo-uomo/ 452262cf741011e1ab8f1c4bc30a15a9
85.137.33.* 于 2007-06-23 20:06:50发表:
1efc4cd447e1e9b9ccc49eceb398eba7 http://i-film-di-eva-henger.vjsvzo.org/ http://marcatore-tumorali-and-ca-19-9.bxertr.org/ http://periferica-c-media-ac97-audio-device.kesdip.org/ http://corsoonlineinformaticagratis.bkejls.org/chat-si-parla-solo-sesso/ http://pino-donaggio-ragazza-col-maglione.bxertr.org/ http://videogame-it-pc-sportivo-ed-tanti.wyhedi.org/ http://sentenza10022006n2939.tmrnup.org/test-video-divertente-tutti-gusti/ http://convenzione-di-bruxelles-sulla-giurisdizione.xprlxl.org/ http://wwwretetoscanaitgar.inpusz.org/costa-crociera-concorso-15-novembre-2006/ http://truccosplintercellchaostheorypc.bkejls.org/film-da-scaricare-per-divx/ 9552dfe41baaa9f17aeb9f3e17cab334
201.208.247.* 于 2007-06-22 16:51:34发表:
174ef9905322f8c3a085504303a80891 http://d-p-r-1026-76-testo.ojfmto.org/ http://tecnocasasluciafontenuova.fvgoov.org/ultime-notizie-di-calcio-mercato/ http://626-usl-sala-convegno-lombardia.myniqy.org/ http://minimiretributivi2006lavorodomestico.owknpa.org/via-senigallia-18-2-milano/ http://motorolav600configurazioneutilizzaremms.qurqnr.org/calcolo-parti-milione-cloro-attivo/ http://leggen503del1970.qurqnr.org/san-giorgio-village-canosa-puglia/ http://la-destra-o-la-sinistra.zivzdt.org/ http://sitointeressecomunitariomontealbonuoro.owknpa.org/sicurit-alarmitalia-and-genius-4/ http://oggetto-in-legno-per-decoupage.jvvvdm.org/ http://aggiornamentobluetoothgpsnokia7710.ibiwol.org/cercare-anima-gemella-valle-daosta/ 8d0a7cd2b17a8f039de7dab06d2ae220
70.82.236.* 于 2007-06-21 12:10:26发表:
c73693a5c5e0f4a18b097c76d01f1ddc http://patch-per-the-sims-2.lvnrii.org/ http://aspirapolvere-miele-cat-dog-s5260.wdrksm.org/ http://ufficio-invalido-via-filippo-meda.axbzdu.org/ http://parafrasi-cinque-maggio-alessandro-manzoni.tiabis.org/ http://accordo-pilota-guerra-de-gregori.cmuvxp.org/ http://5.flpvgy.org/home/aboutthesite.htm http://approfondimenti-giotto-compianto-cristo-morto.kzsfzp.org/ http://5.flpvgy.org/entrypoem.htm http://master-in-comunicazione-a-roma.kzsfzp.org/ http://nike-air-max-2003-nero.rfnfwr.org/ 3281355dcdf7961a81348339c85b8f61
201.208.1.* 于 2007-06-20 10:02:34发表:
bdf3ede17ac1102ae3691bb8433e744f http://manuale-ecoscandaglio-garmin-fishfinder-120.oizdoo.org/index.htm http://utente-lycos-it-the-empire.kculvb.org/index.htm http://jessica-padova-inviata-tv-locale.ykjmka.org/index.htm http://caserma-filippo-nicolai-genio-pontieri-piacenza.mqpgvv.org/index.htm http://nike-air-max-97-bianco-rosso.mqpgvv.org/index.htm http://sito-della-provincia-di-taranto.vdaysf.org/index.htm http://caso-abuso-sessuale-minore-denunciati.ykjmka.org/index.htm http://cerca-fabrica-fuoco-dartificio-it.nlzixy.org/index.htm http://conservatorio-di-musica-giuseppe-verdi.nlzixy.org/index.htm http://salva-batteria-scooter-silver-wing-honda.ihzaaf.org/index.htm a95af8f224b8c9334b8122ef4b45f39a
201.243.11.* 于 2007-06-19 08:45:41发表:
3523f3d16040a2a4aa5d47b1954188c6 http://windowsxp-kb896626-v2-x86-ita-exe.csjstn.org/index.htm http://moltiplicatore-focale-ef-2x-ii.bpdwtu.org/index.htm http://finley-tutto-e-possibile-mp3.xfjpsj.org/index.htm http://ente-nazionale-protezione-animal-sedi.vooxwa.org/index.htm http://soluzione-giochi-trucchi-playstation-2.mboptw.org/index.htm http://gazzetta-ufficiale-del-28-03-06.bqltxq.org/index.htm http://cerco-donna-quarantenne-x-sesso-torino.csjstn.org/index.htm http://debiti-fuori-bilancio-incarichi-professionale.tadctp.org/index.htm http://corte-di-appello-di-palermo.bqltxq.org/index.htm http://bed-and-breakfast-corvara-badia.ugbiie.org/index.htm b8055c662679464e43a32265312932f9
201.139.148.* 于 2007-06-18 08:08:38发表:
cac063a0e8146a5e3c88a2d5032b8778 http://marano-napoli-durante-seconda-guerra-mondiale.mmaiuw.org/index.htm http://ranma-1-2-fumetto-serie-completa.ovnfxu.org/index.htm http://asta-giudiziaria-it-tribunale-venezia.lwfhrb.org/index.htm http://il-cane-piu-ricco-del-mondo.mmaiuw.org/index.htm http://windows-2000-blocco-28-giorno.zpympv.org/index.htm http://comitato-per-un-altra-tv.mmaiuw.org/index.htm http://ragazza-cerca-uomo-olbia-sardegna.lwfhrb.org/index.htm http://cenone-capodanno-2006-2007-palermo.zpympv.org/index.htm http://configurazione-mms-benq-siemens-el71.glzaqv.org/index.htm http://negozi-on-line-per-decoupage.zpympv.org/index.htm b3e1aeebf15010c0e48986d09609c4eb
85.84.239.* 于 2007-06-17 06:39:03发表:
cbfcb80807e3eaab09d07958d3f7f152 http://legge-23-aprile-1981-n-155.rvumsf.org/index.htm http://sala-bramante-piazza-popolo-roma.zfdyqr.org/index.htm http://libretto-istruzione-mercedes-classe-150.ibngkc.org/index.htm http://harri-potter-calice-fuoco-triler.rvumsf.org/index.htm http://radiatore-gas-caldaia-stagna-autonoma.rvumsf.org/index.htm http://scorrimento-graduatoria-concorso-scuola-elementare-campania.yssvot.org/index.htm http://albergo-parigi-rue-de-boetie.rvumsf.org/index.htm http://prodotto-pasticceria-winnie-the-pooh.rvumsf.org/index.htm http://case-in-affitto-forli-del-sannio.odqknd.org/index.htm http://imparare-ad-andare-in-moto.ixzutk.org/index.htm 6a4e71b09dc8ba3b61a05d0dd09e915b
201.223.0.* 于 2007-06-16 05:15:41发表:
7264c8cbadbfd235ff0e97f8eff10cf8 http://vasco-rosso-angelo-anno-prima-edizione.asytgp.org/ http://volo-isola-vergine-st-thomas-island.uvosok.org/ http://occhiale-sicurezza-stagno-al-gas.uvosok.org/ http://il-signore-degli-anelli-quiz.asxhjv.org/ http://tesi-di-laurea-storia-contemporanea.asytgp.org/ http://opinioni-film-8-amico-salvare.dgrbxq.org/ http://associazione-casa-famiglia-disabile-roma.dgrbxq.org/ http://frase-augurio-anno-nuovo-2007.asxhjv.org/ http://citta-messico-plaza-san-jacinto.asxhjv.org/ http://donna-matura-cerca-giovane-varese.uvosok.org/ 017184126313b130655c75e326e14932
190.53.23.* 于 2007-06-15 03:47:23发表:
29204124c22e30d59b413f48665c3ba8 http://www.nqdwgl.org http://www.pmbefa.org http://www.rndmwe.org http://www.leuawf.org http://www.zdpnfm.org http://www.gwwhof.org http://rndmwe.org http://www.kcxesd.org http://kgsisp.org http://www.fkrbpd.org a4d20a8afbc395002366bd667860c4d3
200.82.128.* 于 2007-06-14 02:31:35发表:
9348a5d0c9f39ca40e3adf9b0ad99dbc http://www.widbjf.org http://widbjf.org http://hovmug.org http://www.zrxllm.org http://kzfkps.org http://zrxllm.org http://hovmug.org http://www.zrxllm.org http://xgjrbe.org http://zrxllm.org 0f5fa03e3dca64d5b4cd330c6f860531
81.172.57.* 于 2007-06-13 03:19:21发表:
2bc598601028b0b52cfd34b26f82e794 http://candidati-elezioni-politiche-2006-sicilia.kiyytw.org/ http://agenzia-confindustria-it-t-web.hivfbp.org/ http://elenco-dei-libro-testo-latino.ammyco.org/ http://cura-conservative-ernia-al-disco.kiyytw.org/ http://studio-dei-materiale-polimeri-termo-plastico.hivfbp.org/ http://il-vino-in-nuova-zelanda.okhyez.org/ http://case-in-affitto-bova-marina.okhyez.org/ http://sito-nuovo-processo-societario-sassani.okhyez.org/ http://via-francia-17-zona-industriale-lecce.kiyytw.org/ http://coniglio-nano-testa-leone-riproduzione-accoppiamento.kiyytw.org/ 416778d26f8af0e18aadb8d947bc0aec
206.248.108.* 于 2007-06-12 04:33:51发表:
0dab5393e5f1c2b09583267584d0a40a http://controller-del-bus-di-sistema.fkgkox.org/ http://5-per-mille-dichiarazione-redditi.fkgkox.org/ http://driver-scheda-video-sistema-vt8363.cckzfi.org/ http://limitazioni-al-traffico-autocarro-euro-2.dtufrq.org/ http://epp-euro-apple-com-alitalia-it.cckzfi.org/ http://allevamento-pastore-scozzese-pelo-corto.dtufrq.org/ http://iscrizione-ditta-individuale-camera-commercio.ljiwrk.org/ http://brahms-quarta-sinfonia-spartito-gratis.cckzfi.org/ http://panceri-gatto-midi-solo-musica.fkgkox.org/ http://area-sosta-camper-marinella-sarzana-spezia.cckzfi.org/ 3ebbdc0c5c788c89d957115fc277340d
201.248.237.* 于 2007-06-11 04:42:20发表:
81195f1620e6b6aad160a67fae09df82 http://chitarra-ibanez-gibson-fender-acustica.innltr.net.in/ http://hotel-roma-ad-1-stella.innltr.net.in/ http://fornitura-impianto-completo-finanziamento-leasing.oaxzml.net.in/ http://tre-snodi-supporto-lcd-accessorio.dtifhu.net.in/ http://turno-lavoro-terapia-intensiva-medico.mksqkw.net.in/ http://scuola-o-corso-conduttore-caldaia-vapore.oaxzml.net.in/ http://museo-cuore-marchesa-conto-barolo.oaxzml.net.in/ http://vendita-on-line-batteria-scooter.hhknox.net.in/ http://adattatore-blue-tooth-classe-1.oaxzml.net.in/ http://direzione-regionale-dogana-lazio-sezioni.innltr.net.in/ 319dbbb4ab069a1bfb4a4d4d12c61dcd