kml_utils.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #include <linux/list.h>
  2. #include <linux/mm.h>
  3. #include <linux/smp_lock.h>
  4. #include <linux/slab.h>
  5. #include <linux/vmalloc.h>
  6. #include <linux/intermezzo_fs.h>
  7. #include <linux/intermezzo_kml.h>
  8. // dlogit -- oppsite to logit ()
  9. //         return the sbuf + size;
  10. char *dlogit (void *tbuf, const void *sbuf, int size)
  11. {
  12.         char *ptr = (char *)sbuf;
  13.         memcpy(tbuf, ptr, size);
  14.         ptr += size;
  15.         return ptr;
  16. }
  17. static spinlock_t kml_lock = SPIN_LOCK_UNLOCKED;
  18. static char  buf[1024];
  19. char * bdup_printf (char *format, ...)
  20. {
  21.         va_list args;
  22.         int  i;
  23.         char *path;
  24.         long flags;
  25.         spin_lock_irqsave(&kml_lock, flags);
  26.         va_start(args, format);
  27.         i = vsprintf(buf, format, args); /* hopefully i < sizeof(buf) */
  28.         va_end(args);
  29.         PRESTO_ALLOC (path, char *, i + 1);
  30.         if (path == NULL)
  31.                 return NULL;
  32.         strcpy (path, buf);
  33.         spin_unlock_irqrestore(&kml_lock, flags);
  34.         return path;
  35. }