Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.04 KB | None | 0 0
  1. static ssize_t device_write(struct file *file, const char __user *buffer, size_t length, loff_t *offset)
  2. {
  3.     DBG("device write attempt\n");
  4.     DBG_FMT("length: %i\n", length);
  5.     //struct packet _x;
  6.     //struct packet *foo = &_x;
  7.     struct packet foo;
  8.     DBG_FMT("size should be greater than %i but less than %i - it is: %i\n", sizeof(struct packet) - DATA_MAX, sizeof(struct packet), length);
  9.     if ((length > sizeof(struct packet)) || (length <= (sizeof(struct packet) - DATA_MAX))) // too much or no payload
  10.         return -EINVAL;
  11.     DBG_FMT("allocated memory variable is assigned to: %i", sizeof(foo));
  12.     if (copy_from_user(&foo, buffer, length))
  13.         return -EFAULT;
  14.     foo.data[length - (sizeof(struct packet) - DATA_MAX)] = '\0'; // set 0-Byte to end of string
  15.     DBG_FMT("  header :: duration: %i, count: %i\n", foo.duration, foo.count);
  16.     DBG_FMT("  payload :: as string: < %s >\n", foo.data);
  17.  
  18.     //if (!rfm12_ask_modulate(foo))
  19.     //    return -EINVAL;
  20.  
  21.     DBG_FMT("return: %i\n", length);
  22.     return length;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement