Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 3804
b: refs/heads/master
c: b5e4391
h: refs/heads/master
v: v3
  • Loading branch information
Dominik Brodowski authored and Linus Torvalds committed Jun 28, 2005
1 parent a506f5b commit e8482c2
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 90c6cdd1fa8dd4d69af792541a37b38576aa9b5a
refs/heads/master: b5e43913cfe95a18ad8929585a0bb58e46cf3390
12 changes: 6 additions & 6 deletions trunk/drivers/pcmcia/ds.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,14 +622,14 @@ static void pcmcia_delayed_add_pseudo_device(void *data)
{
struct pcmcia_bus_socket *s = data;
pcmcia_device_add(s, 0);
s->device_add_pending = 0;
s->pcmcia_state.device_add_pending = 0;
}

static inline void pcmcia_add_pseudo_device(struct pcmcia_bus_socket *s)
{
if (!s->device_add_pending) {
if (!s->pcmcia_state.device_add_pending) {
schedule_work(&s->device_add);
s->device_add_pending = 1;
s->pcmcia_state.device_add_pending = 1;
}
return;
}
Expand Down Expand Up @@ -981,14 +981,14 @@ static int ds_event(struct pcmcia_socket *skt, event_t event, int priority)
switch (event) {

case CS_EVENT_CARD_REMOVAL:
s->state &= ~DS_SOCKET_PRESENT;
s->pcmcia_state.present = 0;
send_event(skt, event, priority);
unbind_request(s);
handle_event(s, event);
break;

case CS_EVENT_CARD_INSERTION:
s->state |= DS_SOCKET_PRESENT;
s->pcmcia_state.present = 1;
pcmcia_card_add(skt);
handle_event(s, event);
break;
Expand Down Expand Up @@ -1229,7 +1229,7 @@ static void pcmcia_bus_remove_socket(struct class_device *class_dev)

pccard_register_pcmcia(socket, NULL);

socket->pcmcia->state |= DS_SOCKET_DEAD;
socket->pcmcia->pcmcia_state.dead = 1;
pcmcia_put_bus_socket(socket->pcmcia);
socket->pcmcia = NULL;

Expand Down
14 changes: 8 additions & 6 deletions trunk/drivers/pcmcia/ds_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ struct user_info_t;
/* Socket state information */
struct pcmcia_bus_socket {
struct kref refcount;
int state;
struct pcmcia_socket *parent;

/* the PCMCIA devices connected to this socket (normally one, more
Expand All @@ -15,7 +14,14 @@ struct pcmcia_bus_socket {
* only internally and subject
* to incorrectness and change */

u8 device_add_pending;
struct {
u8 present:1,
busy:1,
dead:1,
device_add_pending:1,
reserved:4;
} pcmcia_state;

struct work_struct device_add;


Expand All @@ -29,10 +35,6 @@ extern spinlock_t pcmcia_dev_list_lock;
extern struct bus_type pcmcia_bus_type;


#define DS_SOCKET_PRESENT 0x01
#define DS_SOCKET_BUSY 0x02
#define DS_SOCKET_DEAD 0x80

extern struct pcmcia_device * pcmcia_get_dev(struct pcmcia_device *p_dev);
extern void pcmcia_put_dev(struct pcmcia_device *p_dev);

Expand Down
12 changes: 6 additions & 6 deletions trunk/drivers/pcmcia/pcmcia_ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -404,12 +404,12 @@ static int ds_open(struct inode *inode, struct file *file)
return -ENODEV;

if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
if (s->state & DS_SOCKET_BUSY) {
if (s->pcmcia_state.busy) {
pcmcia_put_bus_socket(s);
return -EBUSY;
}
else
s->state |= DS_SOCKET_BUSY;
s->pcmcia_state.busy = 1;
}

user = kmalloc(sizeof(user_info_t), GFP_KERNEL);
Expand All @@ -424,7 +424,7 @@ static int ds_open(struct inode *inode, struct file *file)
s->user = user;
file->private_data = user;

if (s->state & DS_SOCKET_PRESENT)
if (s->pcmcia_state.present)
queue_event(user, CS_EVENT_CARD_INSERTION);
return 0;
} /* ds_open */
Expand All @@ -446,7 +446,7 @@ static int ds_release(struct inode *inode, struct file *file)

/* Unlink user data structure */
if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
s->state &= ~DS_SOCKET_BUSY;
s->pcmcia_state.busy = 0;
}
file->private_data = NULL;
for (link = &s->user; *link; link = &(*link)->next)
Expand Down Expand Up @@ -480,7 +480,7 @@ static ssize_t ds_read(struct file *file, char __user *buf,
return -EIO;

s = user->socket;
if (s->state & DS_SOCKET_DEAD)
if (s->pcmcia_state.dead)
return -EIO;

ret = wait_event_interruptible(s->queue, !queue_empty(user));
Expand Down Expand Up @@ -550,7 +550,7 @@ static int ds_ioctl(struct inode * inode, struct file * file,
return -EIO;

s = user->socket;
if (s->state & DS_SOCKET_DEAD)
if (s->pcmcia_state.dead)
return -EIO;

size = (cmd & IOCSIZE_MASK) >> IOCSIZE_SHIFT;
Expand Down

0 comments on commit e8482c2

Please sign in to comment.