Files
linux/drivers/rtc/rtc-test.c
黄涛 677ea8d595 Merge remote-tracking branch 'remotes/aosp/android-3.0' into develop-3.0
Conflicts:
	drivers/net/wireless/adm8211.c
	drivers/net/wireless/airo.c
	drivers/net/wireless/airo_cs.c
	drivers/net/wireless/at76c50x-usb.c
	drivers/net/wireless/at76c50x-usb.h
	drivers/net/wireless/ath/Kconfig
	drivers/net/wireless/ath/Makefile
	drivers/net/wireless/ath/ath.h
	drivers/net/wireless/ath/ath5k/Kconfig
	drivers/net/wireless/ath/ath5k/Makefile
	drivers/net/wireless/ath/ath5k/ani.c
	drivers/net/wireless/ath/ath5k/ani.h
	drivers/net/wireless/ath/ath5k/ath5k.h
	drivers/net/wireless/ath/ath5k/attach.c
	drivers/net/wireless/ath/ath5k/base.c
	drivers/net/wireless/ath/ath5k/base.h
	drivers/net/wireless/ath/ath5k/caps.c
	drivers/net/wireless/ath/ath5k/debug.c
	drivers/net/wireless/ath/ath5k/debug.h
	drivers/net/wireless/ath/ath5k/desc.c
	drivers/net/wireless/ath/ath5k/desc.h
	drivers/net/wireless/ath/ath5k/dma.c
	drivers/net/wireless/ath/ath5k/eeprom.c
	drivers/net/wireless/ath/ath5k/eeprom.h
	drivers/net/wireless/ath/ath5k/initvals.c
	drivers/net/wireless/ath/ath5k/led.c
	drivers/net/wireless/ath/ath5k/pcu.c
	drivers/net/wireless/ath/ath5k/phy.c
	drivers/net/wireless/ath/ath5k/qcu.c
	drivers/net/wireless/ath/ath5k/reg.h
	drivers/net/wireless/ath/ath5k/reset.c
	drivers/net/wireless/ath/ath5k/rfbuffer.h
	drivers/net/wireless/ath/ath5k/sysfs.c
	drivers/net/wireless/ath/ath9k/Kconfig
	drivers/net/wireless/ath/ath9k/Makefile
	drivers/net/wireless/ath/ath9k/ahb.c
	drivers/net/wireless/ath/ath9k/ani.c
	drivers/net/wireless/ath/ath9k/ani.h
	drivers/net/wireless/ath/ath9k/ar5008_initvals.h
	drivers/net/wireless/ath/ath9k/ar5008_phy.c
	drivers/net/wireless/ath/ath9k/ar9001_initvals.h
	drivers/net/wireless/ath/ath9k/ar9002_calib.c
	drivers/net/wireless/ath/ath9k/ar9002_hw.c
	drivers/net/wireless/ath/ath9k/ar9002_initvals.h
	drivers/net/wireless/ath/ath9k/ar9002_mac.c
	drivers/net/wireless/ath/ath9k/ar9002_phy.c
	drivers/net/wireless/ath/ath9k/ar9002_phy.h
	drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
	drivers/net/wireless/ath/ath9k/ar9003_calib.c
	drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
	drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
	drivers/net/wireless/ath/ath9k/ar9003_hw.c
	drivers/net/wireless/ath/ath9k/ar9003_mac.c
	drivers/net/wireless/ath/ath9k/ar9003_mac.h
	drivers/net/wireless/ath/ath9k/ar9003_paprd.c
	drivers/net/wireless/ath/ath9k/ar9003_phy.c
	drivers/net/wireless/ath/ath9k/ar9003_phy.h
	drivers/net/wireless/ath/ath9k/ath9k.h
	drivers/net/wireless/ath/ath9k/beacon.c
	drivers/net/wireless/ath/ath9k/btcoex.c
	drivers/net/wireless/ath/ath9k/btcoex.h
	drivers/net/wireless/ath/ath9k/calib.c
	drivers/net/wireless/ath/ath9k/calib.h
	drivers/net/wireless/ath/ath9k/common.c
	drivers/net/wireless/ath/ath9k/common.h
	drivers/net/wireless/ath/ath9k/debug.c
	drivers/net/wireless/ath/ath9k/debug.h
	drivers/net/wireless/ath/ath9k/eeprom.c
	drivers/net/wireless/ath/ath9k/eeprom.h
	drivers/net/wireless/ath/ath9k/eeprom_4k.c
	drivers/net/wireless/ath/ath9k/eeprom_9287.c
	drivers/net/wireless/ath/ath9k/eeprom_def.c
	drivers/net/wireless/ath/ath9k/gpio.c
	drivers/net/wireless/ath/ath9k/hif_usb.c
	drivers/net/wireless/ath/ath9k/hif_usb.h
	drivers/net/wireless/ath/ath9k/htc.h
	drivers/net/wireless/ath/ath9k/htc_drv_beacon.c
	drivers/net/wireless/ath/ath9k/htc_drv_init.c
	drivers/net/wireless/ath/ath9k/htc_drv_main.c
	drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
	drivers/net/wireless/ath/ath9k/htc_hst.c
	drivers/net/wireless/ath/ath9k/htc_hst.h
	drivers/net/wireless/ath/ath9k/hw-ops.h
	drivers/net/wireless/ath/ath9k/hw.c
	drivers/net/wireless/ath/ath9k/hw.h
	drivers/net/wireless/ath/ath9k/init.c
	drivers/net/wireless/ath/ath9k/mac.c
	drivers/net/wireless/ath/ath9k/mac.h
	drivers/net/wireless/ath/ath9k/main.c
	drivers/net/wireless/ath/ath9k/pci.c
	drivers/net/wireless/ath/ath9k/phy.h
	drivers/net/wireless/ath/ath9k/rc.c
	drivers/net/wireless/ath/ath9k/rc.h
	drivers/net/wireless/ath/ath9k/recv.c
	drivers/net/wireless/ath/ath9k/reg.h
	drivers/net/wireless/ath/ath9k/wmi.c
	drivers/net/wireless/ath/ath9k/wmi.h
	drivers/net/wireless/ath/ath9k/xmit.c
	drivers/net/wireless/ath/debug.c
	drivers/net/wireless/ath/hw.c
	drivers/net/wireless/ath/main.c
	drivers/net/wireless/ath/reg.h
	drivers/net/wireless/ath/regd.c
	drivers/net/wireless/ath/regd.h
	drivers/net/wireless/ath/regd_common.h
	drivers/net/wireless/atmel.c
	drivers/net/wireless/atmel_cs.c
	drivers/net/wireless/b43/Kconfig
	drivers/net/wireless/b43/Makefile
	drivers/net/wireless/b43/b43.h
	drivers/net/wireless/b43/debugfs.c
	drivers/net/wireless/b43/dma.c
	drivers/net/wireless/b43/dma.h
	drivers/net/wireless/b43/leds.c
	drivers/net/wireless/b43/lo.c
	drivers/net/wireless/b43/main.c
	drivers/net/wireless/b43/main.h
	drivers/net/wireless/b43/pcmcia.c
	drivers/net/wireless/b43/phy_a.c
	drivers/net/wireless/b43/phy_common.c
	drivers/net/wireless/b43/phy_common.h
	drivers/net/wireless/b43/phy_g.c
	drivers/net/wireless/b43/phy_g.h
	drivers/net/wireless/b43/phy_lp.c
	drivers/net/wireless/b43/phy_n.c
	drivers/net/wireless/b43/phy_n.h
	drivers/net/wireless/b43/pio.c
	drivers/net/wireless/b43/rfkill.c
	drivers/net/wireless/b43/sdio.c
	drivers/net/wireless/b43/sysfs.c
	drivers/net/wireless/b43/tables_lpphy.c
	drivers/net/wireless/b43/tables_nphy.c
	drivers/net/wireless/b43/tables_nphy.h
	drivers/net/wireless/b43/wa.c
	drivers/net/wireless/b43/xmit.c
	drivers/net/wireless/b43/xmit.h
	drivers/net/wireless/b43legacy/b43legacy.h
	drivers/net/wireless/b43legacy/debugfs.c
	drivers/net/wireless/b43legacy/main.c
	drivers/net/wireless/b43legacy/phy.c
	drivers/net/wireless/b43legacy/rfkill.c
	drivers/net/wireless/b43legacy/xmit.c
	drivers/net/wireless/hostap/hostap_ap.c
	drivers/net/wireless/hostap/hostap_ap.h
	drivers/net/wireless/hostap/hostap_config.h
	drivers/net/wireless/hostap/hostap_cs.c
	drivers/net/wireless/hostap/hostap_hw.c
	drivers/net/wireless/hostap/hostap_ioctl.c
	drivers/net/wireless/hostap/hostap_main.c
	drivers/net/wireless/hostap/hostap_wlan.h
	drivers/net/wireless/ipw2x00/ipw2100.c
	drivers/net/wireless/ipw2x00/ipw2100.h
	drivers/net/wireless/ipw2x00/ipw2200.c
	drivers/net/wireless/ipw2x00/ipw2200.h
	drivers/net/wireless/ipw2x00/libipw_module.c
	drivers/net/wireless/ipw2x00/libipw_rx.c
	drivers/net/wireless/iwlwifi/Kconfig
	drivers/net/wireless/iwlwifi/Makefile
	drivers/net/wireless/iwlwifi/iwl-1000.c
	drivers/net/wireless/iwlwifi/iwl-5000-hw.h
	drivers/net/wireless/iwlwifi/iwl-5000.c
	drivers/net/wireless/iwlwifi/iwl-6000-hw.h
	drivers/net/wireless/iwlwifi/iwl-6000.c
	drivers/net/wireless/iwlwifi/iwl-agn-calib.c
	drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
	drivers/net/wireless/iwlwifi/iwl-agn-hw.h
	drivers/net/wireless/iwlwifi/iwl-agn-ict.c
	drivers/net/wireless/iwlwifi/iwl-agn-lib.c
	drivers/net/wireless/iwlwifi/iwl-agn-rs.c
	drivers/net/wireless/iwlwifi/iwl-agn-rs.h
	drivers/net/wireless/iwlwifi/iwl-agn-tx.c
	drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
	drivers/net/wireless/iwlwifi/iwl-agn.c
	drivers/net/wireless/iwlwifi/iwl-agn.h
	drivers/net/wireless/iwlwifi/iwl-commands.h
	drivers/net/wireless/iwlwifi/iwl-core.c
	drivers/net/wireless/iwlwifi/iwl-core.h
	drivers/net/wireless/iwlwifi/iwl-csr.h
	drivers/net/wireless/iwlwifi/iwl-debug.h
	drivers/net/wireless/iwlwifi/iwl-debugfs.c
	drivers/net/wireless/iwlwifi/iwl-dev.h
	drivers/net/wireless/iwlwifi/iwl-devtrace.c
	drivers/net/wireless/iwlwifi/iwl-devtrace.h
	drivers/net/wireless/iwlwifi/iwl-eeprom.c
	drivers/net/wireless/iwlwifi/iwl-eeprom.h
	drivers/net/wireless/iwlwifi/iwl-fh.h
	drivers/net/wireless/iwlwifi/iwl-hcmd.c
	drivers/net/wireless/iwlwifi/iwl-helpers.h
	drivers/net/wireless/iwlwifi/iwl-io.h
	drivers/net/wireless/iwlwifi/iwl-led.c
	drivers/net/wireless/iwlwifi/iwl-led.h
	drivers/net/wireless/iwlwifi/iwl-power.c
	drivers/net/wireless/iwlwifi/iwl-power.h
	drivers/net/wireless/iwlwifi/iwl-prph.h
	drivers/net/wireless/iwlwifi/iwl-rx.c
	drivers/net/wireless/iwlwifi/iwl-scan.c
	drivers/net/wireless/iwlwifi/iwl-sta.c
	drivers/net/wireless/iwlwifi/iwl-sta.h
	drivers/net/wireless/iwlwifi/iwl-tx.c
	drivers/net/wireless/iwmc3200wifi/cfg80211.c
	drivers/net/wireless/iwmc3200wifi/commands.c
	drivers/net/wireless/iwmc3200wifi/debugfs.c
	drivers/net/wireless/iwmc3200wifi/hal.c
	drivers/net/wireless/iwmc3200wifi/netdev.c
	drivers/net/wireless/iwmc3200wifi/rx.c
	drivers/net/wireless/iwmc3200wifi/sdio.c
	drivers/net/wireless/iwmc3200wifi/tx.c
	drivers/net/wireless/libertas/README
	drivers/net/wireless/libertas/cfg.c
	drivers/net/wireless/libertas/cmd.c
	drivers/net/wireless/libertas/cmdresp.c
	drivers/net/wireless/libertas/debugfs.c
	drivers/net/wireless/libertas/decl.h
	drivers/net/wireless/libertas/defs.h
	drivers/net/wireless/libertas/dev.h
	drivers/net/wireless/libertas/ethtool.c
	drivers/net/wireless/libertas/host.h
	drivers/net/wireless/libertas/if_cs.c
	drivers/net/wireless/libertas/if_sdio.c
	drivers/net/wireless/libertas/if_sdio.h
	drivers/net/wireless/libertas/if_spi.c
	drivers/net/wireless/libertas/if_spi.h
	drivers/net/wireless/libertas/if_usb.c
	drivers/net/wireless/libertas/if_usb.h
	drivers/net/wireless/libertas/main.c
	drivers/net/wireless/libertas/mesh.c
	drivers/net/wireless/libertas/mesh.h
	drivers/net/wireless/libertas/rx.c
	drivers/net/wireless/libertas/tx.c
	drivers/net/wireless/libertas/types.h
	drivers/net/wireless/libertas_tf/if_usb.c
	drivers/net/wireless/libertas_tf/main.c
	drivers/net/wireless/mac80211_hwsim.c
	drivers/net/wireless/mwl8k.c
	drivers/net/wireless/orinoco/cfg.c
	drivers/net/wireless/orinoco/hw.c
	drivers/net/wireless/orinoco/main.c
	drivers/net/wireless/orinoco/orinoco_cs.c
	drivers/net/wireless/orinoco/orinoco_usb.c
	drivers/net/wireless/orinoco/scan.c
	drivers/net/wireless/orinoco/scan.h
	drivers/net/wireless/orinoco/spectrum_cs.c
	drivers/net/wireless/orinoco/wext.c
	drivers/net/wireless/p54/Kconfig
	drivers/net/wireless/p54/eeprom.c
	drivers/net/wireless/p54/eeprom.h
	drivers/net/wireless/p54/fwio.c
	drivers/net/wireless/p54/lmac.h
	drivers/net/wireless/p54/main.c
	drivers/net/wireless/p54/p54.h
	drivers/net/wireless/p54/p54pci.c
	drivers/net/wireless/p54/p54spi.c
	drivers/net/wireless/p54/p54spi_eeprom.h
	drivers/net/wireless/p54/p54usb.c
	drivers/net/wireless/p54/txrx.c
	drivers/net/wireless/prism54/isl_ioctl.c
	drivers/net/wireless/prism54/islpci_dev.c
	drivers/net/wireless/prism54/islpci_eth.c
	drivers/net/wireless/prism54/islpci_hotplug.c
	drivers/net/wireless/ray_cs.c
	drivers/net/wireless/ray_cs.h
	drivers/net/wireless/rayctl.h
	drivers/net/wireless/rndis_wlan.c
	drivers/net/wireless/rt2x00/Kconfig
	drivers/net/wireless/rt2x00/Makefile
	drivers/net/wireless/rt2x00/rt2400pci.c
	drivers/net/wireless/rt2x00/rt2400pci.h
	drivers/net/wireless/rt2x00/rt2500pci.c
	drivers/net/wireless/rt2x00/rt2500pci.h
	drivers/net/wireless/rt2x00/rt2500usb.c
	drivers/net/wireless/rt2x00/rt2800.h
	drivers/net/wireless/rt2x00/rt2800lib.c
	drivers/net/wireless/rt2x00/rt2800lib.h
	drivers/net/wireless/rt2x00/rt2800pci.c
	drivers/net/wireless/rt2x00/rt2800pci.h
	drivers/net/wireless/rt2x00/rt2800usb.c
	drivers/net/wireless/rt2x00/rt2800usb.h
	drivers/net/wireless/rt2x00/rt2x00.h
	drivers/net/wireless/rt2x00/rt2x00config.c
	drivers/net/wireless/rt2x00/rt2x00crypto.c
	drivers/net/wireless/rt2x00/rt2x00debug.c
	drivers/net/wireless/rt2x00/rt2x00dev.c
	drivers/net/wireless/rt2x00/rt2x00dump.h
	drivers/net/wireless/rt2x00/rt2x00firmware.c
	drivers/net/wireless/rt2x00/rt2x00lib.h
	drivers/net/wireless/rt2x00/rt2x00link.c
	drivers/net/wireless/rt2x00/rt2x00mac.c
	drivers/net/wireless/rt2x00/rt2x00pci.c
	drivers/net/wireless/rt2x00/rt2x00pci.h
	drivers/net/wireless/rt2x00/rt2x00queue.c
	drivers/net/wireless/rt2x00/rt2x00queue.h
	drivers/net/wireless/rt2x00/rt2x00reg.h
	drivers/net/wireless/rt2x00/rt2x00soc.c
	drivers/net/wireless/rt2x00/rt2x00usb.c
	drivers/net/wireless/rt2x00/rt2x00usb.h
	drivers/net/wireless/rt2x00/rt61pci.c
	drivers/net/wireless/rt2x00/rt61pci.h
	drivers/net/wireless/rt2x00/rt73usb.c
	drivers/net/wireless/rt2x00/rt73usb.h
	drivers/net/wireless/rtl818x/Makefile
	drivers/net/wireless/rtl818x/rtl8180/grf5101.h
	drivers/net/wireless/rtl818x/rtl8180/max2820.h
	drivers/net/wireless/rtl818x/rtl8180/rtl8180.h
	drivers/net/wireless/rtl818x/rtl8180/rtl8225.h
	drivers/net/wireless/rtl818x/rtl8180/sa2400.h
	drivers/net/wireless/rtl818x/rtl8187/leds.h
	drivers/net/wireless/rtl818x/rtl8187/rfkill.h
	drivers/net/wireless/rtl818x/rtl8187/rtl8225.h
	drivers/net/wireless/wl1251/io.h
	drivers/net/wireless/wl12xx/Kconfig
	drivers/net/wireless/wl12xx/Makefile
	drivers/net/wireless/wl12xx/wl12xx_80211.h
	drivers/net/wireless/wl3501_cs.c
	drivers/net/wireless/zd1201.c
	drivers/net/wireless/zd1211rw/Makefile
	drivers/net/wireless/zd1211rw/zd_chip.c
	drivers/net/wireless/zd1211rw/zd_chip.h
	drivers/net/wireless/zd1211rw/zd_def.h
	drivers/net/wireless/zd1211rw/zd_mac.c
	drivers/net/wireless/zd1211rw/zd_mac.h
	drivers/net/wireless/zd1211rw/zd_rf.h
	drivers/net/wireless/zd1211rw/zd_rf_al2230.c
	drivers/net/wireless/zd1211rw/zd_rf_al7230b.c
	drivers/net/wireless/zd1211rw/zd_rf_rf2959.c
	drivers/net/wireless/zd1211rw/zd_rf_uw2453.c
	drivers/net/wireless/zd1211rw/zd_usb.c
	drivers/net/wireless/zd1211rw/zd_usb.h
2011-10-28 16:07:07 +08:00

195 lines
4.3 KiB
C

/*
* An RTC test device/driver
* Copyright (C) 2005 Tower Technologies
* Author: Alessandro Zummo <a.zummo@towertech.it>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/module.h>
#include <linux/err.h>
#include <linux/rtc.h>
#include <linux/platform_device.h>
static struct platform_device *test0 = NULL, *test1 = NULL;
static int test_rtc_read_alarm(struct device *dev,
struct rtc_wkalrm *alrm)
{
return 0;
}
static int test_rtc_set_alarm(struct device *dev,
struct rtc_wkalrm *alrm)
{
return 0;
}
static int test_rtc_read_time(struct device *dev,
struct rtc_time *tm)
{
unsigned long time = 0xffffff;
rtc_time_to_tm(time, tm);
//rtc_time_to_tm(get_seconds(), tm);
return 0;
}
static int test_rtc_set_mmss(struct device *dev, unsigned long secs)
{
dev_info(dev, "%s, secs = %lu\n", __func__, secs);
return 0;
}
static int test_rtc_proc(struct device *dev, struct seq_file *seq)
{
struct platform_device *plat_dev = to_platform_device(dev);
seq_printf(seq, "test\t\t: yes\n");
seq_printf(seq, "id\t\t: %d\n", plat_dev->id);
return 0;
}
static int test_rtc_alarm_irq_enable(struct device *dev, unsigned int enable)
{
return 0;
}
static const struct rtc_class_ops test_rtc_ops = {
.proc = test_rtc_proc,
.read_time = test_rtc_read_time,
.read_alarm = test_rtc_read_alarm,
.set_alarm = test_rtc_set_alarm,
.set_mmss = test_rtc_set_mmss,
.alarm_irq_enable = test_rtc_alarm_irq_enable,
};
static ssize_t test_irq_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
return sprintf(buf, "%d\n", 42);
}
static ssize_t test_irq_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
int retval;
struct platform_device *plat_dev = to_platform_device(dev);
struct rtc_device *rtc = platform_get_drvdata(plat_dev);
retval = count;
if (strncmp(buf, "tick", 4) == 0 && rtc->pie_enabled)
rtc_update_irq(rtc, 1, RTC_PF | RTC_IRQF);
else if (strncmp(buf, "alarm", 5) == 0) {
struct rtc_wkalrm alrm;
int err = rtc_read_alarm(rtc, &alrm);
if (!err && alrm.enabled)
rtc_update_irq(rtc, 1, RTC_AF | RTC_IRQF);
} else if (strncmp(buf, "update", 6) == 0 && rtc->uie_rtctimer.enabled)
rtc_update_irq(rtc, 1, RTC_UF | RTC_IRQF);
else
retval = -EINVAL;
return retval;
}
static DEVICE_ATTR(irq, S_IRUGO | S_IWUSR, test_irq_show, test_irq_store);
static int test_probe(struct platform_device *plat_dev)
{
int err;
struct rtc_device *rtc = rtc_device_register("test", &plat_dev->dev,
&test_rtc_ops, THIS_MODULE);
if (IS_ERR(rtc)) {
err = PTR_ERR(rtc);
return err;
}
err = device_create_file(&plat_dev->dev, &dev_attr_irq);
if (err)
goto err;
platform_set_drvdata(plat_dev, rtc);
return 0;
err:
rtc_device_unregister(rtc);
return err;
}
static int __devexit test_remove(struct platform_device *plat_dev)
{
struct rtc_device *rtc = platform_get_drvdata(plat_dev);
rtc_device_unregister(rtc);
device_remove_file(&plat_dev->dev, &dev_attr_irq);
return 0;
}
static struct platform_driver test_driver = {
.probe = test_probe,
.remove = __devexit_p(test_remove),
.driver = {
.name = "rtc-test",
.owner = THIS_MODULE,
},
};
static int __init test_init(void)
{
int err;
if ((err = platform_driver_register(&test_driver)))
return err;
if ((test0 = platform_device_alloc("rtc-test", 0)) == NULL) {
err = -ENOMEM;
goto exit_driver_unregister;
}
if ((test1 = platform_device_alloc("rtc-test", 1)) == NULL) {
err = -ENOMEM;
goto exit_free_test0;
}
if ((err = platform_device_add(test0)))
goto exit_free_test1;
if ((err = platform_device_add(test1)))
goto exit_device_unregister;
return 0;
exit_device_unregister:
platform_device_unregister(test0);
exit_free_test1:
platform_device_put(test1);
exit_free_test0:
platform_device_put(test0);
exit_driver_unregister:
platform_driver_unregister(&test_driver);
return err;
}
static void __exit test_exit(void)
{
platform_device_unregister(test0);
platform_device_unregister(test1);
platform_driver_unregister(&test_driver);
}
MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
MODULE_DESCRIPTION("RTC test driver/device");
MODULE_LICENSE("GPL");
module_init(test_init);
module_exit(test_exit);