Logo Search packages:      
Sourcecode: dmraid version File versions

ata.c

/*
 * Copyright (C) 2004,2005  Heinz Mauelshagen, Red Hat GmbH.
 *                          All rights reserved.
 *
 * See file LICENSE at the top of this source tree for license information.
 */

/* Thx scsiinfo. */

#include <string.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <mm/dbg_malloc.h>

#include "dev-io.h"
#include "ata.h"

int
get_ata_serial(struct lib_context *lc, int fd, struct dev_info *di)
{
      int ret = 0;
      const int cmd_offset = 4;
      unsigned char *buf;
      struct ata_identify *ata_ident;

      if ((buf = dbg_malloc(cmd_offset + sizeof(*ata_ident)))) {
            buf[0] = ATA_IDENTIFY_DEVICE;
            buf[3] = 1;
            if (!ioctl(fd, HDIO_DRIVE_CMD, buf)) {
                  ata_ident = (struct ata_identify *) &buf[cmd_offset];
                  if ((di->serial =
                       dbg_strdup(remove_white_space
                              (lc, (char *) ata_ident->serial,
                               ATA_SERIAL_LEN))))
                        ret = 1;
            }

            dbg_free(buf);
      }

      return ret;
}

Generated by  Doxygen 1.6.0   Back to index