إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

simple character device

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • simple character device

    كود PHP:
    #include <linux/init.h>
    #include <linux/module.h>
    #include <linux/moduleparam.h>
    #include <linux/fs.h>
    #include <linux/errno.h>
    #include <linux/slab.h>
    #include <linux/types.h>
    #include <linux/kdev_t.h>
    #include <linux/cdev.h>

    #include <asm/uaccess.h>


    static dev_t major;
    static 
    int test_ret;
    static 
    int param_major param_minor 0;
    static 
    struct cdev device_struct;

    module_param(param_major int 0);
    module_param(param_minor int 0);

    /*static int storm_read(struct file *filp , */

    static int device_open(struct inode *node struct file *filp)
    {
            
    printk(KERN_ALERT"Device is opend\n");
    }


    static 
    ssize_t device_read(struct file *filp ,  char __user *buf size_t count loff_t *off)
    {
            
    char *required;
            if(
    count 35)
                    
    count 35;

            
    required kmalloc(count *sizeof(char) , GFP_KERNEL);
            if(!
    required)
                    return 
    ENOMEM;
            
    memcpy(required "Character device written by St0rM" count);

            if(
    copy_to_user(buf required count))
                    return 
    EFAULT;

            
    kfree(required);

            return 
    count;
    }


    static 
    int init_device(void)
    {

            
    struct file_operation ops =
            {
                    .
    owner THIS_MODULE;                   /* Owner*/
                    
    .read device_read;                    /* Device opned for read */
                    
    .open device_open;                    /* Device opened */
            
    };

            if(
    param_major && param_minor)
            {
                    
    major MKDEV(param_major param_minor);
                    
    test_ret register_chrdev_region(majot "storm");
            }else
            {
                    
    test_ret alloc_chrdev_region(&major "/dev/storm");
            }

                    if(
    test_ret 0)
                    {
                            
    test_ret 2;                   /* Device number allocation error*/
                            
    return EFAULT;                  /* Uptill now nothing we should worry about */
                    
    }

                    
    printk(KERN_ALERT"Driver Major is ready\n");

                    
    cdev_init(&device_struct , &ops);

                    
    device_struct.owner THIS_MODULE;

                    
    /* Here we should make sure that every thing is allright */
                    
    test_ret cdev_add(&device_struct dev 1);

                    if(
    test_ret 0)
                    {
                            
    exit_device();
                            
    test_ret 3;           /* device adding error */
                            
    return EFAULT;
                    }



    }

    static 
    void exit_device(void)
    {
            
    pritnk(KERN_ALERT"cleaning up\n");

            
    unregister_chrdev_region(major 1);

            if(
    test_ret == 3)               /* device error , no need to remove it */
                    
    return;

            
    cdev_del(device_struct);

    }

    module_init(init_device);
    module_exit(exit_device);




    MODULE_AUTHOR("St0rM-MaN");
    MODULE_DESCRIPTION("Simple character device module sending out a message");
    MODULE_DEVICE("/dev/storm");
    MODULE_LICENSE("Gpl"); 
    الحقيقه انا لسه مش جربته لان ال kernel بتاعي مش عارف ماله :angry_red: نفخني عايز configuration ولازمله قاعده :angry_red:

    المهم يعني اهم حاجه هو ال device دوت وظيفته مش اكتر من انه
    بيعمل driver جديد ويعمله register in kernel internal devices
    وكل علي عليك بس انك تعمل
    mknod /dev/storm c [major][minor]
    للاسف لحد دلوقتي مش لاقي طريقه اني استخرج ال major/minor numbers من ال /proc/devices والحقيقه مش طالبه اني اكتب حرف تاني :angry_red:

    بعد ماتعمل كده جرب مثلا تعمل cat /dev/storm مثلا
    او تكتب برنامج صغير يفتح ال device ويقرا منه
    كود PHP:
    int fd open("/dev/storm" O_RDONLY);

    read(fd string 20); 
    ياريت لو حد جرب يقولي
    اااااه قبل مانسي انا مش جربته اذن انا غير مسؤل عنه
    مش يجيلي واحد يقولي عملي crash في الكيرنيل بتاعي انا قلت اهوه
    striker ياريت تكون اول واحد نجربه بس بالراحه علي ال Shepard

    all this codes and topics is not for a real life use right now , until a good implementation is produced
    codes are only for educational purpose
    BOOOF , I AM GONE
    Still , you gotta wait for my PRESENT :D
    C programming arabic Tutorial|Programming-fr34ks

  • #2
    ^
    ^
    ^
    شكرا ياستورم ...

    فين ايقونه المشاركه فى الموضوع .. ؟؟ ارجو المره المقبله بعد نسيانها كي لا يغلق الموضوع ..

    وشكرا على ماتقدمه ..

    مع التحيه

    BAD3R

    Twitter
    : @Linux4SA

    تعليق


    • #3
      هع مش عارف اقول إيه بصراحة انت نفسك خايف تجربه
      جاى تقلى انا يالى كل حاجتى فى ال ER اجربه lol


      striker ياريت تكون اول واحد نجربه بس بالراحه علي ال Shepard
      لما استلم الهارد هجرب ان شاء الله

      Things are not what they appear to be says:
      حتقتلني والله في مره بالاختصارات ديت انت
      Things are not what they appear to be says:
      شوفت الكيرنيل البييظنطي الوغد عمل فيا ايه
      Things are not what they appear to be says:
      اتحالف مع الفنيقين الاوغاد ومسح الكونفيجيروشن بتاعتي
      رجعت فى كلامى جرب إنت مع نفسك هههههههههههههه

      ADIOS
      Programming-Fr34ks[dot]NET
      Ma Weblog
      ابدأ بتعلم Python | Ruby
      كتاب البايثون متوافر الآن
      لا اتواجد بهذا المنتدى ... للإتصال

      تعليق


      • #4
        شكرا يابدر علي مرورك
        ________________________________________
        سترايكر افندي بتفضحني ياسترايكر
        يعني مش كفايه الكيرنيل عملها معايا طب استر عليا
        ماشي هههههههههههههههههههههههههههههه
        Not implemented
        هو ال Shepard هرب
        هههههههههههههههههههههههههههه
        BOOOF , I AM GONE
        Still , you gotta wait for my PRESENT :D
        C programming arabic Tutorial|Programming-fr34ks

        تعليق

        يعمل...
        X