Linux内核LCD驱动某些寄存器值无法修改

为了熟悉总线驱动,便自己写内核LCD驱动,板子是4412的开发板,make menuconfig里面裁剪LCD驱动后会报很多错误所以在drivers/video下面注释掉LCD相关的驱动。注释过后重新编译kernel。dev下面已经没有fb了。

现在只是测试内核LCD显示,寄存器配置用的跟裸板一样的配置步骤,裸板上面已经测试过了,能够正常显示图片。证明寄存器的,所以寄存器配置步骤应该是没有问题的。

现在出现的问题就是,按照裸板上的配置步骤,让开发板在Linux内核模块程序中配置寄存器,insmod能够成功添加模块,但printk打印来看,某些寄存器(LCD寄存器)能够修改,某些寄存器不能修改,修改的方法是一样的。所以应该不是修改方法的问题。我看了一下/proc/iomem文件,不能修改的那段寄存器地址已经被注册了,不知道是不是这个原因导致我无法修改。

搞了几天了,个人无法解决,跪求方法 Orz

3个回答

这是/proc/iomem 文件里面LCD寄存器注册的那一部分

11a30000-11a30fff : s5p-sysmmu.2
11a30000-11a30fff : s5p-sysmmu.2
11a40000-11a40fff : s5p-sysmmu.3
11a40000-11a40fff : s5p-sysmmu.3
11a50000-11a50fff : s5p-sysmmu.4
11a50000-11a50fff : s5p-sysmmu.4
11a60000-11a60fff : s5p-sysmmu.5
11a60000-11a60fff : s5p-sysmmu.5

            11c00000-11c07fff : s3cfb.0

12000000-1225ffff : exynos4-fimc-is
12000000-1225ffff : exynos4-fimc-is
12260000-12260fff : s5p-sysmmu.16
12260000-12260fff : s5p-sysmmu.16
12270000-12270fff : s5p-sysmmu.17
12270000-12270fff : s5p-sysmmu.17
122a0000-122a0fff : s5p-sysmmu.18

不是所有的bit能改 

这个问题解决了么,我现在也碰到了这个问题

u010147522
Fezl 不好意思,朋友,并没有解决。估计是代码没有注释干净,好像是改了寄存器的值,但是立马又被其它程序改回来一样
大约 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Linux内核SATA驱动部分代码疑问

我是一名ssd firmware开发人员,在查看linux SATA驱动代码时,下面的代码中,第152行到155行的代码看起来很容易死循环,由于我对linux内核代码不熟悉,而且linux很稳定,我不是很确定这部分代码是否有问题,还请熟悉linux内核的同学帮我看一下这个代码有没有问题,贴出的代码来自linux kernel 4.20.2,文件路径是\driver\ata\sata_dwc_460ex.c, 507行 ``` static irqreturn_t sata_dwc_isr(int irq, void *dev_instance) { struct ata_host *host = (struct ata_host *)dev_instance; struct sata_dwc_device *hsdev = HSDEV_FROM_HOST(host); struct ata_port *ap; struct ata_queued_cmd *qc; unsigned long flags; u8 status, tag; int handled, num_processed, port = 0; uint intpr, sactive, sactive2, tag_mask; struct sata_dwc_device_port *hsdevp; hsdev->sactive_issued = 0; spin_lock_irqsave(&host->lock, flags); /* Read the interrupt register */ intpr = sata_dwc_readl(&hsdev->sata_dwc_regs->intpr); ap = host->ports[port]; hsdevp = HSDEVP_FROM_AP(ap); dev_dbg(ap->dev, "%s intpr=0x%08x active_tag=%d\n", __func__, intpr, ap->link.active_tag); /* Check for error interrupt */ if (intpr & SATA_DWC_INTPR_ERR) { sata_dwc_error_intr(ap, hsdev, intpr); handled = 1; goto DONE; } /* Check for DMA SETUP FIS (FP DMA) interrupt */ if (intpr & SATA_DWC_INTPR_NEWFP) { clear_interrupt_bit(hsdev, SATA_DWC_INTPR_NEWFP); tag = (u8)(sata_dwc_readl(&hsdev->sata_dwc_regs->fptagr)); dev_dbg(ap->dev, "%s: NEWFP tag=%d\n", __func__, tag); if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_PEND) dev_warn(ap->dev, "CMD tag=%d not pending?\n", tag); hsdev->sactive_issued |= qcmd_tag_to_mask(tag); qc = ata_qc_from_tag(ap, tag); /* * Start FP DMA for NCQ command. At this point the tag is the * active tag. It is the tag that matches the command about to * be completed. */ qc->ap->link.active_tag = tag; sata_dwc_bmdma_start_by_tag(qc, tag); handled = 1; goto DONE; } sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; /* If no sactive issued and tag_mask is zero then this is not NCQ */ if (hsdev->sactive_issued == 0 && tag_mask == 0) { if (ap->link.active_tag == ATA_TAG_POISON) tag = 0; else tag = ap->link.active_tag; qc = ata_qc_from_tag(ap, tag); /* DEV interrupt w/ no active qc? */ if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) { dev_err(ap->dev, "%s interrupt with no active qc qc=%p\n", __func__, qc); ap->ops->sff_check_status(ap); handled = 1; goto DONE; } status = ap->ops->sff_check_status(ap); qc->ap->link.active_tag = tag; hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; if (status & ATA_ERR) { dev_dbg(ap->dev, "interrupt ATA_ERR (0x%x)\n", status); sata_dwc_qc_complete(ap, qc, 1); handled = 1; goto DONE; } dev_dbg(ap->dev, "%s non-NCQ cmd interrupt, protocol: %s\n", __func__, get_prot_descript(qc->tf.protocol)); DRVSTILLBUSY: if (ata_is_dma(qc->tf.protocol)) { /* * Each DMA transaction produces 2 interrupts. The DMAC * transfer complete interrupt and the SATA controller * operation done interrupt. The command should be * completed only after both interrupts are seen. */ hsdevp->dma_interrupt_count++; if (hsdevp->dma_pending[tag] == \ SATA_DWC_DMA_PENDING_NONE) { dev_err(ap->dev, "%s: DMA not pending intpr=0x%08x status=0x%08x pending=%d\n", __func__, intpr, status, hsdevp->dma_pending[tag]); } if ((hsdevp->dma_interrupt_count % 2) == 0) sata_dwc_dma_xfer_complete(ap, 1); } else if (ata_is_pio(qc->tf.protocol)) { ata_sff_hsm_move(ap, qc, status, 0); handled = 1; goto DONE; } else { if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) goto DRVSTILLBUSY; } handled = 1; goto DONE; } /* * This is a NCQ command. At this point we need to figure out for which * tags we have gotten a completion interrupt. One interrupt may serve * as completion for more than one operation when commands are queued * (NCQ). We need to process each completed command. */ /* process completed commands */ sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive); tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; if (sactive != 0 || hsdev->sactive_issued > 1 || tag_mask > 1) { dev_dbg(ap->dev, "%s NCQ:sactive=0x%08x sactive_issued=0x%08x tag_mask=0x%08x\n", __func__, sactive, hsdev->sactive_issued, tag_mask); } if ((tag_mask | hsdev->sactive_issued) != hsdev->sactive_issued) { dev_warn(ap->dev, "Bad tag mask? sactive=0x%08x sactive_issued=0x%08x tag_mask=0x%08x\n", sactive, hsdev->sactive_issued, tag_mask); } /* read just to clear ... not bad if currently still busy */ status = ap->ops->sff_check_status(ap); dev_dbg(ap->dev, "%s ATA status register=0x%x\n", __func__, status); tag = 0; num_processed = 0; while (tag_mask) { num_processed++; while (!(tag_mask & 0x00000001)) { tag++; tag_mask <<= 1; } tag_mask &= (~0x00000001); qc = ata_qc_from_tag(ap, tag); /* To be picked up by completion functions */ qc->ap->link.active_tag = tag; hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; /* Let libata/scsi layers handle error */ if (status & ATA_ERR) { dev_dbg(ap->dev, "%s ATA_ERR (0x%x)\n", __func__, status); sata_dwc_qc_complete(ap, qc, 1); handled = 1; goto DONE; } /* Process completed command */ dev_dbg(ap->dev, "%s NCQ command, protocol: %s\n", __func__, get_prot_descript(qc->tf.protocol)); if (ata_is_dma(qc->tf.protocol)) { hsdevp->dma_interrupt_count++; if (hsdevp->dma_pending[tag] == \ SATA_DWC_DMA_PENDING_NONE) dev_warn(ap->dev, "%s: DMA not pending?\n", __func__); if ((hsdevp->dma_interrupt_count % 2) == 0) sata_dwc_dma_xfer_complete(ap, 1); } else { if (unlikely(sata_dwc_qc_complete(ap, qc, 1))) goto STILLBUSY; } continue; STILLBUSY: ap->stats.idle_irq++; dev_warn(ap->dev, "STILL BUSY IRQ ata%d: irq trap\n", ap->print_id); } /* while tag_mask */ /* * Check to see if any commands completed while we were processing our * initial set of completed commands (read status clears interrupts, * so we might miss a completed command interrupt if one came in while * we were processing --we read status as part of processing a completed * command). */ sata_dwc_scr_read(&ap->link, SCR_ACTIVE, &sactive2); if (sactive2 != sactive) { dev_dbg(ap->dev, "More completed - sactive=0x%x sactive2=0x%x\n", sactive, sactive2); } handled = 1; DONE: spin_unlock_irqrestore(&host->lock, flags); return IRQ_RETVAL(handled); } ``` @天麓

关于linux内核的驱动程序

类似于wm8960这种的内核提供驱动源码的,如何能得到单独的.ko驱动文件呢?

我要如何单独编译这个linux-sunxi内核的驱动模块

![图片说明](https://img-ask.csdn.net/upload/201601/21/1453389436_249473.png) 编译后它说找不到那个文件 但是这个源码是它本身自带的led驱动 它原生得makefile是把全部内核编译在一起的 我只是改了makefile就变成这样了 我要怎么做才能单独的调试它啊 我必须要在这个文件夹下 因为我的板子烧得就是这个内核的 这是我修改的makefile obj-m := leds-sunxi.o #要生成的模块名 modules-objs:= leds-sunxi.o #生成这个模块名所需要的目标文件 KDIR := /lib/modules/`uname -r`/build PWD := $(shell pwd) default: make -C $(KDIR) M=$(PWD) modules clean: rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions

linux 内核 spi驱动出错

请教,我在linux下(2.6.32)进行gpio模拟spi操作,但是当我调用spi_register_board_info 函数的时候,代码死机了,其具体情况如下: static struct spi_board_info stm32_board_info = { .modalias = "stm32-spi", .max_speed_hz = 10000000, .bus_num = 1, .mode = SPI_MODE_0, }; ret = spi_register_board_info(&stm32_board_info, 1); 死机了: do_cpu invoked from kernel context![#1]: Cpu 0 $ 0 : 00000000 004fdbd6 0000001f 00000001 $ 4 : 81c97c84 00000001 ffffffff 80126830 $ 8 : 3a207061 72616c6c 00000000 7271210a $12 : 7fa41760 00103044 2a60d837 00000000 $16 : 826e02c0 81fa1e08 826e0000 7fa417f0 $20 : 81fa1e08 0049a688 004e9d90 004fdb68 $24 : 00000000 80125f34 $28 : 81fa0000 81fa1930 004fdbc6 81c82684 Hi : 00000000 Lo : 17b44000 epc : 801df82c spi_register_board_info+0x4/0xa0 // 该接口挂了 Tainted: P ra : 81c82684 para_init+0x30/0xd8 [umac] Status: 1000ff03 KERNEL EXL IE Cause : 9080002c PrId : 00019374 (MIPS 24Kc) Modules linked in: wvas_wloc wbs_sec aclk rg_data_plane efqos_kernel roamk rg_wvlan proc_info ar93xx_et eth_subif umac ath_dev(P) ath_rate_atheros(P) ath_hal asf(P) adf(P) wbs_fwd_intf capwap_kernel rg_wlibk wbuf wbs_mng ef_bridge_ko af_packet ipv4 ref_ip eth_parser srvk net2con fpm_k ref_frame lsm_ko wbs_dev dm_chardev env_utils setmac_utils product_info_utils get_envi mtdoops rg_console rg_sysfs rg_thread_det rg_lowmem_killer rg_dprintk Process wbs_mng.elf (pid: 603, threadinfo=81fa0000, task=82a64038, tls=2aab7770) Stack : 00000009 81c8c89c 00000000 00000010 826e02c0 81c81094 81fa1a88 81fa1b70 00000006 00000000 00000001 00000000 00000005 00000001 81fa1e08 81c4bd1c 00000000 00000042 004fdbc6 00000010 00000000 00000000 81fa1b2c 00000000 00000000 00000001 81fa1a50 81fa1a5c 81fa1a50 00000003 00000000 00000000 00060000 8089c000 00000000 00060001 000000ff 00000000 00060000 004e0000 ... Call Trace: [<801df82c>] spi_register_board_info+0x4/0xa0 [<81c82684>] para_init+0x30/0xd8 [umac] [<81c81094>] rj_ath_wloc_set_tcl_cb+0x12c/0x14c [umac] [<81c4bd1c>] ath_ioctl+0x1b8/0x82c [umac] [<80160688>] dev_ioctl+0x664/0x71c [<80089920>] vfs_ioctl+0x2c/0x70 [<8008a008>] do_vfs_ioctl+0x5a0/0x5f8 [<8008a0a8>] sys_ioctl+0x48/0x7c [<80004124>] stack_done+0x20/0x3c Code: 000003f1 0001678c 00000004 <1100000d> 00000001 00016620 00000000 1100fff1 000004d2 Fatal exception: panic in 5 seconds Kernel panic - not syncing: Fatal exception Call Trace: [<800074bc>] dump_stack+0x8/0x34 [<80007550>] panic+0x68/0x13c [<8000f8d8>] die+0xc8/0xd0 [<8000fa24>] do_cpu+0x38/0x268 [<80002400>] ret_from_exception+0x0/0xc [<801df82c>] spi_register_board_info+0x4/0xa0 [<81c82684>] para_init+0x30/0xd8 [umac] [<81c81094>] rj_ath_wloc_set_tcl_cb+0x12c/0x14c [umac] [<81c4bd1c>] ath_ioctl+0x1b8/0x82c [umac] [<80160688>] dev_ioctl+0x664/0x71c [<80089920>] vfs_ioctl+0x2c/0x70 [<8008a008>] do_vfs_ioctl+0x5a0/0x5f8 [<8008a0a8>] sys_ioctl+0x48/0x7c [<80004124>] stack_done+0x20/0x3c 自身没感觉到调用的时候产生了啥错误,请帮忙指点下;

LINUX内核usb驱动,如何知道数据正在USB接口上传输(包括读写)?

开始数据传输必调用的内核函数是哪个? 数据传输结束必调用的内核函数是哪个? 另外我想在开始和结束的时候做标记,吐一个信息到/tmp/dataTransferSymbol; 或者吐到系统日志也行,设备运行过程中使用dmesg能看到数据传输标志,怎么实现呢? 请高手赐教。谢谢。

linux内核驱动模块ko加载时如何绕过CRC校验的问题。

基于种种原因,本人编写了一个驱动ko文件,想在天机II的系统上insmod,由于没有天机II的源码,故而我只能在nubia的内核源码树中编译ko文件,所以编译出来的ko文件在天机上面加载存在CRC校验的问题(内核源码版本不匹配?)。 现在模块加载时的ver_magic问题已经绕过,算是解决了,但是由于模块中还要用到不少内核导出函数,有些函数的CRC校验值可以在其他ko模块中找到,但也有很多找不到,所以加载不起来,很是头疼,现在该如何是好,有没有大神给予下指导。。。

关于linux内核线程的使用

linux虚拟机中启动一个内核线程,在线程中打印以下信息: - 执行系统调用的进程的ID号 - 分行打印系统中所有内核线程的信息:线程ID、父进程ID、运行状态、名称、用户ID。 每一行打印一个内核线程的信息。 要求在上面,新学的只会创建和结束内核线程,但是具体怎么实现打印这些信息不会。 请教前辈们,如何去实现这个打印的功能,拜求。

关于Linux内核看门狗的疑问

在内核源码中,Linux内核看门狗线程的调度策略是SCHED_FIFO,而我自己的内核模块中调度策略默认为SCHED_NORMAL,按理说FIFO比NORMAL的优先级要高,可为什么我自己模块中的死循环还是让看门狗饿死了,求解释。

linux内核模块调用内核中的函数

我编写了一个简单的内核模块,想验证一下内核workqueue的功能。 如下: ``` #include <linux/module.h> #include <linux/init.h> #include <linux/workqueue.h> #include <linux/sched.h> #include <linux/nsproxy.h> //static struct workqueue_struct *queue=NULL; //extern int copy_namespaces(unsigned long flags, struct task_struct *tsk); static struct work_struct work; static void work_handler(struct work_struct *data) { struct task_struct *base_task = find_task_by_vpid(18572); printk(KERN_ALERT"work handler function.\n"); printk(KERN_ALERT"current--------> %d.\n", current->pid); //copy_namespaces(CLONE_NEWUTS, current); get_nsproxy(base_task->nsproxy); switch_task_namespaces(current, base_task->nsproxy); } static int __init test_init(void) { //queue=system_unbound_wq //create_singlethread_workqueue("hello world");/*创建一个单线程的工作队列*/ //if (!queue) // goto err; INIT_WORK(&work,work_handler); queue_work(system_unbound_wq, &work); return 0; } static void __exit test_exit(void) { //destroy_workqueue(queue); printk(KERN_ALERT "caoshufeng module exit"); } MODULE_LICENSE("GPL"); module_init(test_init); module_exit(test_exit); ``` 这是makefile: obj-m += queue.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 模块make成功,但是无法insomd dmesg中有如下错误: [ 9806.426471] queue: Unknown symbol switch_task_namespaces (err 0) [ 9806.426554] queue: Unknown symbol find_task_by_vpid (err 0) 我已经include了相应的头文件,为啥还是找不到symbol呢?

内核驱动程序的是什么意思和一般意义上的驱动应该怎么理解好

内核驱动程序的是什么意思和一般意义上的驱动应该怎么理解好 我很疑惑,请教了

linux内核 进程地址空间

大神: 我是一个Linux内核菜鸟,在<<深入linux内核架构>>一书中写道:“各个进程的地址空间都是独立的”, ,大神, 我不理解进程的"地址空间"是什么, 是进程的内存吗,请赐教,不胜感激涕零。

嵌入式设备linux内核版本的选择

各位大侠好: 小弟目前打算搭建一个嵌入式平台针对嵌入式设备,采用ARM处理器,是选择2.X内核版本好还是3.X内核版本好?两者的区别大吗?以前做项目主要使用的是2.6.X内核版本,多谢!

在linux内核源码中添加用户自定义的函数

本人刚接触linux不久,想在linux内核中加入自己定义的is_accepted_sd()函数。我在sd_ops().h头文件中声明了自定义的函数,并在sd_ops.c源文件中定义和实现。然后在sd.c源文件中的mmc_sd_init_card()函数中调用了这个自定义的函数。(PS:sd.c中有sd_ops.h这个头文件) 然后我进行编译,结果编译报错。错误如下所示: drivers/built-in.o: In function `mmc_sd_init_card': /opt/FriendlyARM/tiny210/android/linux-2.6.35.7/drivers/mmc/core/sd.c:379: undefined reference to `is_accepted_sd' make: *** [.tmp_vmlinux1] Error 1 真心求各位大神不吝赐教啊~~我把仅剩的2个C币都贡献出去了。

linux内核模块依赖问题

最近修改内核源码,发现模块A的编译过程中,模块A需要依赖模块B和模块C 在编译模块时,A.mod.o的文件中也明确有这一条 depends=bb,cc,dd 那么请问,**在编译过程中**,是在那个地方记录了这个依赖关系?

linux内核态程序并行执行

如题,内核态程序能并行执行吗?比如同时写多个io或者socket? 它是怎样工作的 相关的博文推荐下呗? 谢谢!!!

linux2.6内核版本配置支持ipv6手动修改openwrt.config文件

linux2.6内核版本配置支持ipv6,通过make menuconfig查找ipv6相关选项,设置成Y后,保存,比较.config文件与.config.old文件区别找出来,手动修改openwrt.config文件添加ipv6相关选项,编译可以通过,但是uboot重启后报错。 手动修改openwrt.config添加的内容如下: CONFIG_PACKAGE_kmod-iptunnel4=y CONFIG_PACKAGE_kmod-iptunnel6=y CONFIG_PACKAGE_kmod-ipv6=y CONFIG_BUSYBOX_CONFIG_FEATURE_IPV6=y CONFIG_BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6=y CONFIG_PACKAGE_kmod-ip6tables=y CONFIG_PACKAGE_kmod-sit=y 进入uboot下升级后,reset报错内容如下: 错误1 Process jffs2_gcd_mtd1 (pid: 1662, threadinfo=a800000078918000, task=a8000000788be338, tls=0000000000000000) Stack : 00000000000000d0 0000000000100100 00000000ffc00006 00000000000000d0 0000000000000010 6db6db6db6db6db7 a800000078801780 0000000000000001 a800000078801780 00000000000000d0 0000000000000a2d a8000000011ea9d0 a80000005ad42f78 a8000000010ae400 a80000007891baf8 ffffffff803811f4 a800000066f86558 0000000000000000 0000000000000a2d a8000000010ae400 0000000003b39000 ffffffff804aa1ac a800000062f85000 a80000005ad42df8 a80000005ad42f78 0000000000000023 0000000000000000 0000000000000023 a80000007891bbb0 a80000005ad42ca8 0000000000000000 ffffffff804aa544 0000000000000044 000000000000013c 000000000007a120 0000000000000000 a80000005ad42ca8 0000000000000000 0000002300000000 0000000000000000 ... Call Trace: [<ffffffff80380b28>] cache_alloc_refill+0x140/0x6e0 [<ffffffff803811f4>] __kmalloc+0x12c/0x138 [<ffffffff804aa1ac>] check_tn_node+0x254/0x368 [<ffffffff804aa544>] jffs2_do_read_inode_internal+0x284/0x19d0 [<ffffffff804abd04>] jffs2_do_crccheck_inode+0x74/0xc8 [<ffffffff804af6a4>] jffs2_garbage_collect_pass+0x38c/0x1870 [<ffffffff804b2308>] jffs2_garbage_collect_thread+0x150/0x1d0 [<ffffffff80326780>] kthread+0x88/0x90 [<ffffffff802e3e68>] kernel_thread_helper+0x10/0x18 此时怀疑是内存分配太小的原因,setenv修改bootsys=bootcheck 0 $(mtdparts) mem=2048m 大小由1024m变成2048m保存再次重启,报错如下 Modules linked in: kbup linux_bcm_cdi linux_bcm_diag(P) linux_bcm_core(P) linux_uk_proxy(P) linux_kernel_bde(P) octeon_ethernet nf_conntrack6 Process jffs2_gcd_mtd1 (pid: 1662, threadinfo=a800000078918000, task=a8000000788be338, tls=0000000000000000) Stack : 00000000000004d0 0000000000100100 00000000ffc00006 00000000000004d0 0000000000000010 6db6db6db6db6db7 a800000066ff5680 0000000000000001 00000000000004d0 a80000007880e280 0000000000000000 0000000000000000 00000000000004d0 ffffffff80326ad0 0000000000000051 ffffffff803812c8 ffffffff81009a50 a800000066ff5680 00000000000004d0 0000000000000051 a80000007880e280 ffffffff80662654 a800000066ff5680 7fffffffffffffff ffffffffffffffff a800000066ff57ac a8000000788e3ac8 ffffffff8065bb64 ffffffff80fc0000 ffffffff8039b834 ffffffff83120000 a80000006ec87b80 a8000000788e3b80 0000000000000000 a8000000788e3b40 0000000000000000 a8000000788e3b48 a8000000788e3d88 a8000000787cc080 a80000006ecb3c80 ... Call Trace: [<ffffffff80380b28>] cache_alloc_refill+0x140/0x6e0 [<ffffffff803812c8>] kmem_cache_alloc+0xc8/0xd0 [<ffffffff80662654>] __alloc_skb+0x44/0x178 [<ffffffff8065bb64>] sock_alloc_send_pskb+0x24c/0x390 [<ffffffff806f1004>] unix_dgram_sendmsg+0x234/0x5f8 [<ffffffff806588f4>] sock_sendmsg+0xec/0x128 [<ffffffff80658cf8>] SyS_sendto+0xe8/0x130 [<ffffffff80102c44>] handle_sys64+0x44/0x64 Process in:imuxsock (pid: 1681, threadinfo=a80000006ec40000, task=a800000001038eb8, tls=0000005561044910) Stack : 0000000000000001 a80000006ec85f00 0000000000000001 a80000006ec43d10 a80000006ec85ea8 ffffffff80326ae4 0000000000000000 ffffffff802fe560 0000000000001fa0 0000000000000040 a80000006ec43cd8 0000000000001fa0 a80000006ec85c80 a80000006ec43b30 a800000078407080 a80000006ec43d10 a80000006ec85ea8 ffffffff8066595c 0000000000000085 ffffffff80665578 0000000000001fa0 ffffffff806efd8c ffffff867890c278 ffffffff80302930 0000067900000000 0000000000000000 0000000000000000 a800000000000000 a800000078407080 a80000006ec43cd8 0000000000000040 0000000000001fa0 a80000006ec43ba8 a80000006ec43d90 a80000006ec43d10 a80000006ec43d10 0000005561038920 ffffffff80658390 a8000000043f3300 a800000001038eb8 ... Call Trace: [<ffffffff8066573c>] __skb_recv_datagram+0x13c/0x340 [<ffffffff8066595c>] skb_recv_datagram+0x1c/0x28 [<ffffffff806efd8c>] unix_dgram_recvmsg+0xac/0x398 [<ffffffff80658390>] sock_recvmsg+0x100/0x140 [<ffffffff806584fc>] SyS_recvmsg+0x12c/0x2b8 [<ffffffff80102c44>] handle_sys64+0x44/0x64 请教各位这是出了什么问题? 该如何解决?是不是手动添加openwt.config文件的时候少添加了什么东西还是?有没有大神配置成功过?求经验,谢谢!

关于linux内核使用第三方库

想在内核源码中写入一个模块,因为会用到高精度的数字,所以会使用一些第三方库,但是不知道怎么在内核make的时候引入这些第三方库。

为什么tcp/ip协议被写在了Linux内核里面,或者说有什么好处

为什么tcp/ip协议被写在了Linux内核里面,或者说有什么好处,求高手专业性 的解答,谢谢

linux内核态调试手段问题

各位大神,我最近在研究内核调试这一块儿,有诸多疑问,望解答。 本人调试的linux内核为运行在Freescale imx53开发板的andorid内核,android4.3.2,linux2.6.35。 ubuntu版本为14.04。欲在Ubuntu上搭建一个针对配套的内核调试环境,以实现单步、断点等调试。 这几天在网上搜索资料,推荐的内核调试的比较实用的方法有gdb与gdbserver,kgdb,但有诸多疑问,尚未成功。 1)gdb与gdbserver 这个能实现内核调试么?网上这个方法的一般都是针对应用程序,它能实现内核调试么?如果能,将gdbserver运行在我的arm上呢? 2)kgdb kgdb为补丁,需要添加补丁,但说kgdb从linux2.6.7?大概这个版本之后就自带了?是的么?这个时候怎么启用呢? 希望尽快有大神给我解答,或推荐一下有那本书将内核调试比较全面;或推荐一款更为实用的调试方法,小妹不胜感激

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

MySQL性能优化(五):为什么查询速度这么慢

前期回顾: MySQL性能优化(一):MySQL架构与核心问题 MySQL性能优化(二):选择优化的数据类型 MySQL性能优化(三):深入理解索引的这点事 MySQL性能优化(四):如何高效正确的使用索引 前面章节我们介绍了如何选择优化的数据类型、如何高效的使用索引,这些对于高性能的MySQL来说是必不可少的。但这些还完全不够,还需要合理的设计查询。如果查询写的很糟糕,即使表结构再合理、索引再...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

网上很多的文章和帖子中在介绍秒杀系统时,说是在下单时使用异步削峰来进行一些限流操作,那都是在扯淡! 因为下单操作在整个秒杀系统的流程中属于比较靠后的操作了,限流操作一定要前置处理,在秒杀业务后面的流程中做限流操作是没啥卵用的。

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

疫情后北上广深租房价格跌了吗? | Alfred数据室

去年3月份我们发布了《北上广深租房图鉴》(点击阅读),细数了北上广深租房的各种因素对租房价格的影响。一年过去了,在面临新冠疫情的后续影响、城市尚未完全恢复正常运转、学校还没开学等情况下...

面试官给我挖坑:a[i][j] 和 a[j][i] 有什么区别?

点击上方“朱小厮的博客”,选择“设为星标”后台回复&#34;1024&#34;领取公众号专属资料本文以一个简单的程序开头——数组赋值:int LEN = 10000; int[][] ...

又一起程序员被抓事件

就在昨天互联网又发生一起让人心酸的程序员犯罪事件,著名的百度不限速下载软件 Pandownload PC 版作者被警方抓获。案件大致是这样的:软件的作者不仅非法盗取用户数据,还在QQ群进...

应聘3万的职位,有必要这么刁难我么。。。沙雕。。。

又一次被面试官带到坑里面了。面试官:springmvc用过么?我:用过啊,经常用呢面试官:springmvc中为什么需要用父子容器?我:嗯。。。没听明白你说的什么。面试官:就是contr...

太狠了,疫情期间面试,一个问题砍了我5000!

疫情期间找工作确实有点难度,想拿到满意的薪资,确实要点实力啊!面试官:Spring中的@Value用过么,介绍一下我:@Value可以标注在字段上面,可以将外部配置文件中的数据,比如可以...

Intellij IDEA 美化指南

经常有人问我,你的 IDEA 配色哪里搞的,我会告诉他我自己改的。作为生产力工具,不但要顺手而且更要顺眼。这样才能快乐编码,甚至降低 BUG 率。上次分享了一些 IDEA 有用的插件,反...

【相亲】96年程序员小哥第一次相亲,还没开始就结束了

颜值有点高,条件有点好

太厉害了,终于有人能把TCP/IP 协议讲的明明白白了

一图看完本文 一、 计算机网络体系结构分层 计算机网络体系结构分层 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。 二、 TCP/IP 基础 1. TCP/IP 的具体含义 从字面意义上讲,有人可能会认为...

腾讯面试题: 百度搜索为什么那么快?

我还记得去年面腾讯时,面试官最后一个问题是:百度/google的搜索为什么那么快? 这个问题我懵了,我从来没想过,搜素引擎的原理是什么 然后我回答:百度爬取了各个网站的信息,然后进行排序,当输入关键词的时候进行文档比对……巴拉巴拉 面试官:这不是我想要的答案 我内心 这个问题我一直耿耿于怀,终于今天,我把他写出来,以后再问,我直接把这篇文章甩给他!!! 两个字:倒排,将贯穿整篇文章,也是面试官...

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问