Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 615 → Rev 616

/shark/trunk/drivers/linuxc26/include/drivers/shark_videodev26.h
407,6 → 407,9
/* Open VideoDev Interface */
int VIDEODEV26_open(int num);
 
/* Close VideoDev Interface */
int VIDEODEV26_close(int num);
 
/* IOCTL to VideoDev device */
int VIDEODEV26_ioctl(int num,unsigned int cmd,unsigned long arg);
 
/shark/trunk/drivers/linuxc26/videodev.c
389,8 → 389,9
void *file = NULL;
 
int bttv_open(struct inode *inode, struct file *file);
/* Shark Inode emulation */
int bttv_release(struct inode *inode, struct file *file);
/* Shark Inode emulation - Open */
int videodev_open_inode(int num) {
struct inode *i;
410,6 → 411,26
}
 
/* Shark Inode emulation - Close */
int videodev_close_inode(int num) {
struct inode *i;
i = (struct inode *)kmalloc(sizeof(struct inode),GFP_KERNEL);
linuxcomp_setfd(i,num);
if (bttv_release(i,file)) {
kfree(i);
return -1;
}
kfree(file);
kfree(i);
return 0;
}
 
extern int bttv_ioctl(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg);
 
428,6 → 449,8
return res;
}
 
 
module_init(videodev_init)
module_exit(videodev_exit)
/shark/trunk/drivers/linuxc26/linuxcomp.c
375,7 → 375,7
diff = (unsigned long)((((unsigned long)mem/4)+1)*4-(unsigned long)mem);
*(unsigned long *)(mem+diff) = (diff | 0x80000000);
 
return (mem+diff+4);
}
382,10 → 382,11
 
void vfree(void *addr) {
 
if (addr == NULL) return;
if (addr == NULL || *(unsigned long *)(addr-4) == 0) return;
 
if ((*(unsigned long *)(addr-4) & 0x80000000) == 0x80000000) {
free(addr-(*(unsigned long *)(addr-4) & 0x7FFFFFFF)-4);
*(unsigned long *)(addr-4) = 0;
return;
}
 
/shark/trunk/drivers/linuxc26/shark_videodev.c
21,8 → 21,10
#include <kernel/kern.h>
 
extern int videodev_open_inode(int num);
extern int videodev_close_inode(int num);
extern int videodev_ioctl_inode(int num,unsigned int cmd,unsigned long arg);
 
/* Open Videodev */
int VIDEODEV26_open(int num) {
 
if (videodev_open_inode(num)) {
34,6 → 36,15
 
}
 
/* Close videodev */
int VIDEODEV26_close(int num) {
videodev_close_inode(num);
return 0;
}
 
int VIDEODEV26_ioctl(int num,unsigned int cmd,unsigned long arg) {
 
return videodev_ioctl_inode(num,cmd,arg);